ngsolve 6.2.2406__cp311-cp311-macosx_10_15_universal2.whl → 6.2.2406.post111.dev1__cp311-cp311-macosx_10_15_universal2.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ngsolve might be problematic. Click here for more details.
- netgen/include/arnoldi.hpp +3 -0
- netgen/include/basematrix.hpp +9 -18
- netgen/include/basevector.hpp +43 -71
- netgen/include/bilinearform.hpp +8 -59
- netgen/include/blockjacobi.hpp +4 -0
- netgen/include/cg.hpp +3 -0
- netgen/include/chebyshev.hpp +3 -0
- netgen/include/comp.hpp +0 -4
- netgen/include/diagonalmatrix.hpp +154 -0
- netgen/include/dump.hpp +5 -5
- netgen/include/eigen.hpp +3 -0
- netgen/include/elementbyelement.hpp +4 -0
- netgen/include/elementtopology.hpp +0 -3
- netgen/include/expr.hpp +2 -0
- netgen/include/fespace.hpp +12 -14
- netgen/include/finiteelement.hpp +7 -7
- netgen/include/h1amg.hpp +3 -1
- netgen/include/hcurlhdivfes.hpp +2 -0
- netgen/include/hcurlhofespace.hpp +4 -3
- netgen/include/hdivfes.hpp +3 -3
- netgen/include/hdivhosurfacefespace.hpp +3 -3
- netgen/include/intrule.hpp +15 -1
- netgen/include/jacobi.hpp +3 -0
- netgen/include/la.hpp +1 -13
- netgen/include/matrix.hpp +21 -0
- netgen/include/meshaccess.hpp +21 -51
- netgen/include/mgpre.hpp +1 -1
- netgen/include/mptools.hpp +1 -2
- netgen/include/multivector.hpp +2 -0
- netgen/include/ngsobject.hpp +1 -1
- netgen/include/nodalhofe.hpp +3 -0
- netgen/include/normalfacetfespace.hpp +4 -5
- netgen/include/order.hpp +3 -1
- netgen/include/parallel_matrices.hpp +5 -0
- netgen/include/paralleldofs.hpp +44 -95
- netgen/include/parallelngs.hpp +2 -1
- netgen/include/parallelvector.hpp +12 -16
- netgen/include/pardisoinverse.hpp +1 -0
- netgen/include/periodic.hpp +1 -0
- netgen/include/pmltrafo.hpp +5 -2
- netgen/include/preconditioner.hpp +3 -1
- netgen/include/scalarfe.hpp +4 -1
- netgen/include/sparsecholesky.hpp +4 -0
- netgen/include/sparsematrix.hpp +8 -41
- netgen/include/sparsematrix_dyn.hpp +2 -0
- netgen/include/sparsematrix_impl.hpp +66 -1
- netgen/include/special_matrix.hpp +3 -138
- netgen/include/tpdiffop.hpp +1 -0
- netgen/include/tpintrule.hpp +2 -0
- netgen/include/umfpackinverse.hpp +1 -1
- netgen/include/vector.hpp +6 -1
- netgen/include/vvector.hpp +10 -1
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngsolve.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/cmake/NGSolveConfig.cmake +6 -6
- ngsolve/config/config.py +5 -5
- ngsolve/config.py +5 -5
- ngsolve/demos/intro/poisson.py +1 -1
- ngsolve/demos/mpi/mpi_navierstokes.py +2 -0
- ngsolve/demos/mpi/mpi_timeDG.py +3 -0
- ngsolve/ngslib.so +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngscxx +2 -2
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngsld +1 -1
- {ngsolve-6.2.2406.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2406.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/RECORD +103 -102
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/Netgen.icns +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngsolve.tcl +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngspy +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2406.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2406.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2406.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2406.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/top_level.txt +0 -0
netgen/include/fespace.hpp
CHANGED
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
#include <finiteelement.hpp>
|
|
13
13
|
#include <diffop.hpp>
|
|
14
14
|
#include <symbolicintegrator.hpp> // for ProxyFunction
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
#include <basevector.hpp>
|
|
17
|
+
#include <basematrix.hpp>
|
|
18
|
+
|
|
19
|
+
// #include <paralleldofs.hpp>
|
|
20
|
+
|
|
16
21
|
|
|
17
22
|
#include "ngsobject.hpp"
|
|
18
23
|
|
|
@@ -283,14 +288,7 @@ ANY 1 1 1 1 | 15
|
|
|
283
288
|
order_policy = op;
|
|
284
289
|
}
|
|
285
290
|
|
|
286
|
-
virtual void SetOrder (ELEMENT_TYPE et, TORDER order)
|
|
287
|
-
{
|
|
288
|
-
if (order_policy == CONSTANT_ORDER || order_policy == OLDSTYLE_ORDER)
|
|
289
|
-
order_policy = NODE_TYPE_ORDER;
|
|
290
|
-
et_bonus_order[et] = order - this->order;
|
|
291
|
-
|
|
292
|
-
timestamp = 0; // rerun first_update
|
|
293
|
-
}
|
|
291
|
+
virtual void SetOrder (ELEMENT_TYPE et, TORDER order);
|
|
294
292
|
|
|
295
293
|
virtual void SetOrder (NodeId ni, int order);
|
|
296
294
|
virtual int GetOrder (NodeId ni) const;
|
|
@@ -924,7 +922,7 @@ ANY 1 1 1 1 | 15
|
|
|
924
922
|
class NGS_DLL_HEADER NonconformingFESpace : public FESpace
|
|
925
923
|
{
|
|
926
924
|
///
|
|
927
|
-
Array<int> ndlevel;
|
|
925
|
+
// Array<int> ndlevel;
|
|
928
926
|
|
|
929
927
|
public:
|
|
930
928
|
NonconformingFESpace (shared_ptr<MeshAccess> ama, const Flags & flags, bool parseflags=false);
|
|
@@ -938,7 +936,7 @@ ANY 1 1 1 1 | 15
|
|
|
938
936
|
|
|
939
937
|
virtual FiniteElement & GetFE (ElementId ei, Allocator & lh) const override;
|
|
940
938
|
///
|
|
941
|
-
virtual size_t GetNDof () const throw() override;
|
|
939
|
+
// virtual size_t GetNDof () const throw() override;
|
|
942
940
|
///
|
|
943
941
|
virtual void GetDofNrs (ElementId ei, Array<DofId> & dnums) const override;
|
|
944
942
|
};
|
|
@@ -949,7 +947,7 @@ ANY 1 1 1 1 | 15
|
|
|
949
947
|
class NGS_DLL_HEADER NonconformingSurfaceFESpace : public FESpace
|
|
950
948
|
{
|
|
951
949
|
///
|
|
952
|
-
Array<int> ndlevel;
|
|
950
|
+
// Array<int> ndlevel;
|
|
953
951
|
|
|
954
952
|
public:
|
|
955
953
|
NonconformingSurfaceFESpace (shared_ptr<MeshAccess> ama, const Flags & flags, bool parseflags=false);
|
|
@@ -963,7 +961,7 @@ ANY 1 1 1 1 | 15
|
|
|
963
961
|
|
|
964
962
|
virtual FiniteElement & GetFE (ElementId ei, Allocator & lh) const override;
|
|
965
963
|
///
|
|
966
|
-
virtual size_t GetNDof () const throw() override;
|
|
964
|
+
// virtual size_t GetNDof () const throw() override;
|
|
967
965
|
///
|
|
968
966
|
virtual void GetDofNrs (ElementId ei, Array<DofId> & dnums) const override;
|
|
969
967
|
};
|
|
@@ -1433,7 +1431,7 @@ namespace ngcore
|
|
|
1433
1431
|
template<>
|
|
1434
1432
|
struct MPI_typetrait<ngcomp::COUPLING_TYPE>
|
|
1435
1433
|
{
|
|
1436
|
-
static
|
|
1434
|
+
static auto MPIType ()
|
|
1437
1435
|
{
|
|
1438
1436
|
static_assert ( (sizeof(ngcomp::COUPLING_TYPE) == sizeof(char)) ||
|
|
1439
1437
|
(sizeof(ngcomp::COUPLING_TYPE) == sizeof(int)) );
|
netgen/include/finiteelement.hpp
CHANGED
|
@@ -71,7 +71,7 @@ namespace ngfem
|
|
|
71
71
|
/// the name of the element family
|
|
72
72
|
virtual string ClassName() const;
|
|
73
73
|
|
|
74
|
-
virtual
|
|
74
|
+
virtual FiniteElement * SetVertexNumbers (FlatArray<int> vnums);
|
|
75
75
|
|
|
76
76
|
virtual IntegrationRule GetIR (int order) const;
|
|
77
77
|
|
|
@@ -103,13 +103,12 @@ namespace ngfem
|
|
|
103
103
|
{
|
|
104
104
|
protected:
|
|
105
105
|
/// pointers to the components
|
|
106
|
-
|
|
107
|
-
FlatArray<const FiniteElement*> fea;
|
|
106
|
+
FlatArray<FiniteElement*> fea;
|
|
108
107
|
bool all_the_same{true};
|
|
109
108
|
|
|
110
109
|
public:
|
|
111
110
|
/// initialize with pointers to components, copy pointers
|
|
112
|
-
CompoundFiniteElement (FlatArray<
|
|
111
|
+
CompoundFiniteElement (FlatArray<FiniteElement*> afea);
|
|
113
112
|
|
|
114
113
|
HD virtual ELEMENT_TYPE ElementType() const override { return fea[0]->ElementType(); }
|
|
115
114
|
/// number of components
|
|
@@ -130,10 +129,11 @@ namespace ngfem
|
|
|
130
129
|
/// the name of the element family
|
|
131
130
|
virtual string ClassName() const override { return "CompoundFiniteElement"; }
|
|
132
131
|
|
|
133
|
-
virtual
|
|
132
|
+
virtual CompoundFiniteElement * SetVertexNumbers (FlatArray<int> vnums) override
|
|
134
133
|
{
|
|
135
134
|
for (auto pfel : fea)
|
|
136
|
-
|
|
135
|
+
pfel -> SetVertexNumbers(vnums);
|
|
136
|
+
return this;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
HD virtual bool ComplexShapes() const override;
|
|
@@ -174,7 +174,7 @@ namespace ngfem
|
|
|
174
174
|
/// the name of the element family
|
|
175
175
|
virtual string ClassName() const override { return "VectorFiniteElement"; }
|
|
176
176
|
|
|
177
|
-
virtual
|
|
177
|
+
virtual VectorFiniteElement * SetVertexNumbers (FlatArray<int> vnums) override;
|
|
178
178
|
|
|
179
179
|
virtual void Print (ostream & ost) const override;
|
|
180
180
|
|
netgen/include/h1amg.hpp
CHANGED
netgen/include/hcurlhdivfes.hpp
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "fespace.hpp"
|
|
11
11
|
#include "h1hofespace.hpp"
|
|
12
|
+
#include <sparsematrix.hpp>
|
|
12
13
|
|
|
13
14
|
namespace ngcomp
|
|
14
15
|
{
|
|
@@ -23,7 +24,7 @@ namespace ngcomp
|
|
|
23
24
|
protected:
|
|
24
25
|
|
|
25
26
|
typedef short TORDER;
|
|
26
|
-
|
|
27
|
+
|
|
27
28
|
// Level
|
|
28
29
|
int level;
|
|
29
30
|
Array<DofId> first_edge_dof;
|
|
@@ -58,7 +59,7 @@ namespace ngcomp
|
|
|
58
59
|
bool usegrad;
|
|
59
60
|
bool var_order;
|
|
60
61
|
|
|
61
|
-
int ndof;
|
|
62
|
+
// int ndof;
|
|
62
63
|
int nedfine;
|
|
63
64
|
int uniform_order_inner;
|
|
64
65
|
int uniform_order_face;
|
|
@@ -95,7 +96,7 @@ namespace ngcomp
|
|
|
95
96
|
///
|
|
96
97
|
virtual void DoArchive (Archive & archive) override;
|
|
97
98
|
///
|
|
98
|
-
virtual size_t GetNDof () const throw() override;
|
|
99
|
+
// virtual size_t GetNDof () const throw() override;
|
|
99
100
|
virtual void SetOrder (NodeId ni, int order) override;
|
|
100
101
|
virtual int GetOrder (NodeId ni) const override;
|
|
101
102
|
using FESpace::GetOrder;
|
netgen/include/hdivfes.hpp
CHANGED
|
@@ -19,7 +19,7 @@ namespace ngcomp
|
|
|
19
19
|
class RaviartThomasFESpace : public FESpace
|
|
20
20
|
{
|
|
21
21
|
///
|
|
22
|
-
Array<int> ndlevel;
|
|
22
|
+
// Array<int> ndlevel;
|
|
23
23
|
public:
|
|
24
24
|
///
|
|
25
25
|
/*
|
|
@@ -42,9 +42,9 @@ namespace ngcomp
|
|
|
42
42
|
|
|
43
43
|
virtual FiniteElement & GetFE (ElementId ei, Allocator & lh) const override;
|
|
44
44
|
///
|
|
45
|
-
virtual size_t GetNDof () const throw() override;
|
|
45
|
+
// virtual size_t GetNDof () const throw() override;
|
|
46
46
|
///
|
|
47
|
-
virtual size_t GetNDofLevel (int level) const override;
|
|
47
|
+
// virtual size_t GetNDofLevel (int level) const override;
|
|
48
48
|
|
|
49
49
|
///
|
|
50
50
|
virtual void GetDofNrs (ElementId ei, Array<DofId> & dnums) const override;
|
|
@@ -15,7 +15,7 @@ namespace ngcomp
|
|
|
15
15
|
{
|
|
16
16
|
protected:
|
|
17
17
|
|
|
18
|
-
int ndof;
|
|
18
|
+
// int ndof;
|
|
19
19
|
|
|
20
20
|
Array<DofId> first_facet_dof;
|
|
21
21
|
Array<DofId> first_inner_dof;
|
|
@@ -28,7 +28,7 @@ namespace ngcomp
|
|
|
28
28
|
Array<bool> fine_facet;
|
|
29
29
|
Array<bool> boundary_facet;
|
|
30
30
|
|
|
31
|
-
Array<int> ndlevel;
|
|
31
|
+
// Array<int> ndlevel;
|
|
32
32
|
int uniform_order_inner;
|
|
33
33
|
int uniform_order_facet;
|
|
34
34
|
|
|
@@ -64,7 +64,7 @@ namespace ngcomp
|
|
|
64
64
|
virtual void UpdateDofTables() override;
|
|
65
65
|
virtual void UpdateCouplingDofArray() override;
|
|
66
66
|
|
|
67
|
-
virtual size_t GetNDof () const throw() override;
|
|
67
|
+
// virtual size_t GetNDof () const throw() override;
|
|
68
68
|
|
|
69
69
|
virtual FiniteElement & GetFE (ElementId ei, Allocator & alloc) const override;
|
|
70
70
|
|
netgen/include/intrule.hpp
CHANGED
|
@@ -436,7 +436,7 @@ namespace ngfem
|
|
|
436
436
|
INLINE SCAL operator() (int i) const { return point(i); }
|
|
437
437
|
|
|
438
438
|
///
|
|
439
|
-
INLINE const Vec<R,SCAL> GetNV () const { return normalvec; }
|
|
439
|
+
INLINE const Vec<R,SCAL> & GetNV () const { return normalvec; }
|
|
440
440
|
///
|
|
441
441
|
INLINE void SetNV ( Vec<R,SCAL> vec) { normalvec = vec; }
|
|
442
442
|
///
|
|
@@ -1481,6 +1481,7 @@ namespace ngfem
|
|
|
1481
1481
|
int DimSpace() const;
|
|
1482
1482
|
|
|
1483
1483
|
virtual SliceMatrix<> GetPoints() const = 0;
|
|
1484
|
+
virtual SliceMatrix<> GetNormals() const = 0;
|
|
1484
1485
|
virtual SliceMatrix<Complex> GetPointsComplex() const
|
|
1485
1486
|
{ throw Exception("don't have complex ir"); }
|
|
1486
1487
|
virtual void ComputeNormalsAndMeasure (ELEMENT_TYPE et) { throw Exception ("ComputeNormalsAndMeasure(ET) not overloaded"); }
|
|
@@ -1551,6 +1552,13 @@ namespace ngfem
|
|
|
1551
1552
|
const_cast<double*> (&mips[0].GetPoint()(0)));
|
|
1552
1553
|
}
|
|
1553
1554
|
|
|
1555
|
+
virtual SliceMatrix<> GetNormals() const
|
|
1556
|
+
{
|
|
1557
|
+
return SliceMatrix<> (mips.Size(), DIM_SPACE*sizeof(SCAL)/sizeof(double),
|
|
1558
|
+
sizeof(MappedIntegrationPoint<DIM_ELEMENT, DIM_SPACE, SCAL>) / sizeof(double),
|
|
1559
|
+
const_cast<double*> (&mips[0].GetNV()(0)));
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1554
1562
|
virtual void ComputeNormalsAndMeasure (ELEMENT_TYPE et);
|
|
1555
1563
|
virtual void ComputeNormalsAndMeasure (ELEMENT_TYPE et, int facetnr);
|
|
1556
1564
|
virtual bool IsComplex() const { return false; }
|
|
@@ -1616,6 +1624,12 @@ namespace ngfem
|
|
|
1616
1624
|
const_cast<Complex*> (&mips[0].GetPointComplex()(0)));
|
|
1617
1625
|
}
|
|
1618
1626
|
|
|
1627
|
+
virtual SliceMatrix<> GetNormals() const
|
|
1628
|
+
{
|
|
1629
|
+
throw Exception("never tested");
|
|
1630
|
+
}
|
|
1631
|
+
|
|
1632
|
+
|
|
1619
1633
|
virtual void ComputeNormalsAndMeasure (ELEMENT_TYPE et, int facetnr);
|
|
1620
1634
|
virtual bool IsComplex() const { return true; }
|
|
1621
1635
|
};
|
netgen/include/jacobi.hpp
CHANGED
netgen/include/la.hpp
CHANGED
|
@@ -2,15 +2,6 @@
|
|
|
2
2
|
#define FILE_NGLA
|
|
3
3
|
|
|
4
4
|
#include <bla.hpp>
|
|
5
|
-
#include <core/mpi_wrapper.hpp>
|
|
6
|
-
|
|
7
|
-
/*
|
|
8
|
-
namespace ngcomp
|
|
9
|
-
{
|
|
10
|
-
class Preconditioner;
|
|
11
|
-
class LocalPreconditioner;
|
|
12
|
-
}
|
|
13
|
-
*/
|
|
14
5
|
|
|
15
6
|
/** namespace for linear algebra.
|
|
16
7
|
*/
|
|
@@ -33,13 +24,10 @@ namespace ngla
|
|
|
33
24
|
#include "order.hpp"
|
|
34
25
|
#include "sparsecholesky.hpp"
|
|
35
26
|
#include "pardisoinverse.hpp"
|
|
36
|
-
// include these only from c++-files
|
|
37
|
-
// #include "umfpackinverse.hpp"
|
|
38
|
-
// #include "superluinverse.hpp"
|
|
39
|
-
// #include "mumpsinverse.hpp"
|
|
40
27
|
#include "jacobi.hpp"
|
|
41
28
|
#include "blockjacobi.hpp"
|
|
42
29
|
#include "commutingAMG.hpp"
|
|
30
|
+
#include "diagonalmatrix.hpp"
|
|
43
31
|
#include "special_matrix.hpp"
|
|
44
32
|
#include "elementbyelement.hpp"
|
|
45
33
|
#include "cg.hpp"
|
netgen/include/matrix.hpp
CHANGED
|
@@ -243,11 +243,21 @@ namespace ngbla
|
|
|
243
243
|
return FlatMatrix (next-first, w, data+first*w);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
INLINE FlatMatrix Rows (size_t next) const
|
|
247
|
+
{
|
|
248
|
+
return FlatMatrix (next, w, data);
|
|
249
|
+
}
|
|
250
|
+
|
|
246
251
|
INLINE SliceMatrix<T> Cols (size_t first, size_t next) const
|
|
247
252
|
{
|
|
248
253
|
return SliceMatrix<T> (h, next-first, w, data+first);
|
|
249
254
|
}
|
|
250
255
|
|
|
256
|
+
INLINE SliceMatrix<T> Cols (size_t next) const
|
|
257
|
+
{
|
|
258
|
+
return SliceMatrix<T> (h, next, w, data);
|
|
259
|
+
}
|
|
260
|
+
|
|
251
261
|
INLINE FlatMatrix Rows (IntRange range) const
|
|
252
262
|
{
|
|
253
263
|
return FlatMatrix (range.Next()-range.First(), w, data+range.First()*w);
|
|
@@ -1356,6 +1366,12 @@ namespace ngbla
|
|
|
1356
1366
|
return MatrixView<T,ORD,TH,size_t,TDIST> (h, next-first, Dist(), Addr(0,first));
|
|
1357
1367
|
}
|
|
1358
1368
|
|
|
1369
|
+
INLINE auto Cols (size_t next) const
|
|
1370
|
+
{
|
|
1371
|
+
return Cols(0, next);
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
|
|
1359
1375
|
INLINE auto Rows (size_t first, size_t next) const
|
|
1360
1376
|
{
|
|
1361
1377
|
if constexpr (ORD==RowMajor)
|
|
@@ -1369,6 +1385,11 @@ namespace ngbla
|
|
|
1369
1385
|
return Rows (range.First(), range.Next());
|
|
1370
1386
|
}
|
|
1371
1387
|
|
|
1388
|
+
INLINE auto Rows (size_t next) const
|
|
1389
|
+
{
|
|
1390
|
+
return Rows (0, next);
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1372
1393
|
template <int R>
|
|
1373
1394
|
INLINE auto Rows() const
|
|
1374
1395
|
{
|
netgen/include/meshaccess.hpp
CHANGED
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
#include <nginterface_v2.hpp>
|
|
12
|
-
#include <core/ranges.hpp>
|
|
13
|
-
|
|
14
12
|
#include <elementtopology.hpp>
|
|
15
13
|
|
|
16
14
|
namespace ngfem
|
|
@@ -26,7 +24,6 @@ namespace ngcomp
|
|
|
26
24
|
{
|
|
27
25
|
class PML_Transformation;
|
|
28
26
|
|
|
29
|
-
// using ngcore::INT;
|
|
30
27
|
using netgen::Ng_Node;
|
|
31
28
|
using ngfem::ELEMENT_TYPE;
|
|
32
29
|
|
|
@@ -158,30 +155,6 @@ namespace ngcomp
|
|
|
158
155
|
INLINE auto end () const { return DimElementIterator<VB,DIM>(ma, r.Next()); }
|
|
159
156
|
};
|
|
160
157
|
|
|
161
|
-
/*
|
|
162
|
-
class NodeIterator
|
|
163
|
-
{
|
|
164
|
-
NodeId ni;
|
|
165
|
-
public:
|
|
166
|
-
NodeIterator (NodeId ani) : ni(ani) { ; }
|
|
167
|
-
NodeIterator operator++ () { return NodeIterator(++ni); }
|
|
168
|
-
INLINE NodeId operator*() const { return ni; }
|
|
169
|
-
bool operator!=(NodeIterator id2) const { return ni != id2.ni; }
|
|
170
|
-
bool operator==(NodeIterator id2) const { return ni == id2.ni; }
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
class NodeRange : public IntRange
|
|
174
|
-
{
|
|
175
|
-
NODE_TYPE nt;
|
|
176
|
-
public:
|
|
177
|
-
NodeRange (NODE_TYPE ant, IntRange ar)
|
|
178
|
-
: IntRange(ar), nt(ant) { ; }
|
|
179
|
-
NodeIterator begin () const { return NodeIterator(NodeId(nt,IntRange::First())); }
|
|
180
|
-
NodeIterator end () const { return NodeIterator(NodeId(nt,IntRange::Next())); }
|
|
181
|
-
NodeId operator[] (size_t nr) { return NodeId(nt, IntRange::First()+nr); }
|
|
182
|
-
};
|
|
183
|
-
*/
|
|
184
|
-
|
|
185
158
|
/**
|
|
186
159
|
Access to mesh topology and geometry.
|
|
187
160
|
|
|
@@ -240,9 +213,12 @@ namespace ngcomp
|
|
|
240
213
|
|
|
241
214
|
/// store periodic vertex mapping for each identification number
|
|
242
215
|
// shared ptr because Meshaccess is copy constructible
|
|
216
|
+
/*
|
|
243
217
|
shared_ptr<Array<Array<IVec<2>>>> periodic_node_pairs[3] = {make_shared<Array<Array<IVec<2>>>>(),
|
|
244
218
|
make_shared<Array<Array<IVec<2>>>>(),
|
|
245
219
|
make_shared<Array<Array<IVec<2>>>>()};
|
|
220
|
+
*/
|
|
221
|
+
Array<Array<IVec<2>>> periodic_node_pairs[3];
|
|
246
222
|
|
|
247
223
|
DynamicTable<size_t> neighbours[4][4];
|
|
248
224
|
friend class Region;
|
|
@@ -662,7 +638,7 @@ namespace ngcomp
|
|
|
662
638
|
|
|
663
639
|
void SetDeformation (shared_ptr<GridFunction> def = nullptr);
|
|
664
640
|
|
|
665
|
-
|
|
641
|
+
shared_ptr<GridFunction> GetDeformation () const
|
|
666
642
|
{
|
|
667
643
|
return deformation;
|
|
668
644
|
}
|
|
@@ -817,15 +793,6 @@ namespace ngcomp
|
|
|
817
793
|
void GetFaceEdges (int fnr, Array<int> & edges) const;
|
|
818
794
|
INLINE auto GetFaceEdges (size_t fnr) const
|
|
819
795
|
{ return ArrayObject(mesh.GetFaceEdges(fnr)); }
|
|
820
|
-
/*
|
|
821
|
-
{
|
|
822
|
-
ArrayMem<int,4> f2ed;
|
|
823
|
-
GetFaceEdges (fnr, f2ed);
|
|
824
|
-
f2ed.NothingToDelete(); // dynamic allocation never needed
|
|
825
|
-
return f2ed;
|
|
826
|
-
}
|
|
827
|
-
*/
|
|
828
|
-
|
|
829
796
|
void GetEdgeFaces (int enr, Array<int> & faces) const;
|
|
830
797
|
/// returns elements connected to a face
|
|
831
798
|
void GetFaceElements (int fnr, Array<int> & elnums) const;
|
|
@@ -911,7 +878,6 @@ namespace ngcomp
|
|
|
911
878
|
}
|
|
912
879
|
|
|
913
880
|
|
|
914
|
-
// void GetVertexElements (int vnr, Array<int> & elnrs) const;
|
|
915
881
|
/// element order stored in Netgen
|
|
916
882
|
int GetElOrder (int enr) const
|
|
917
883
|
{ return mesh.GetElementOrder (enr+1); }
|
|
@@ -1053,11 +1019,11 @@ namespace ngcomp
|
|
|
1053
1019
|
}
|
|
1054
1020
|
}
|
|
1055
1021
|
|
|
1056
|
-
|
|
1022
|
+
/*
|
|
1057
1023
|
// (old style optimization)
|
|
1058
1024
|
[[deprecated("functionality not useful anymore, just remove function call!")]]
|
|
1059
1025
|
void SetPointSearchStartElement(const int el) const;
|
|
1060
|
-
|
|
1026
|
+
*/
|
|
1061
1027
|
|
|
1062
1028
|
|
|
1063
1029
|
ElementId FindElementOfPoint (FlatVector<double> point,
|
|
@@ -1083,6 +1049,7 @@ namespace ngcomp
|
|
|
1083
1049
|
{ return GetElement(ElementId(VOL,elnr)).is_curved; }
|
|
1084
1050
|
// { return bool (Ng_IsElementCurved (elnr+1)); }
|
|
1085
1051
|
|
|
1052
|
+
/*
|
|
1086
1053
|
[[deprecated("Use GetPeriodicNodes(NT_VERTEX, pairs) instead!")]]
|
|
1087
1054
|
void GetPeriodicVertices ( Array<IVec<2> > & pairs) const;
|
|
1088
1055
|
[[deprecated("Use GetNPeriodicNodes(NT_VERTEX) instead!")]]
|
|
@@ -1100,10 +1067,11 @@ namespace ngcomp
|
|
|
1100
1067
|
void GetPeriodicEdges (int idnr, Array<IVec<2> > & pairs) const;
|
|
1101
1068
|
[[deprecated("Use GetPeriodicNodes(NT_EDGE, idnr).Size() instead")]]
|
|
1102
1069
|
int GetNPairsPeriodicEdges (int idnr) const;
|
|
1103
|
-
|
|
1070
|
+
*/
|
|
1071
|
+
|
|
1104
1072
|
int GetNPeriodicIdentifications() const
|
|
1105
1073
|
{
|
|
1106
|
-
return periodic_node_pairs[NT_VERTEX]
|
|
1074
|
+
return periodic_node_pairs[NT_VERTEX].Size();
|
|
1107
1075
|
}
|
|
1108
1076
|
// get number of all periodic nodes of nodetype nt
|
|
1109
1077
|
size_t GetNPeriodicNodes(NODE_TYPE nt) const;
|
|
@@ -1147,9 +1115,10 @@ namespace ngcomp
|
|
|
1147
1115
|
|
|
1148
1116
|
// void PrecomputeGeometryData(int intorder);
|
|
1149
1117
|
|
|
1118
|
+
/*
|
|
1150
1119
|
void InitPointCurve(double red = 1, double green = 0, double blue = 0) const;
|
|
1151
1120
|
void AddPointCurvePoint(const Vec<3> & point) const;
|
|
1152
|
-
|
|
1121
|
+
*/
|
|
1153
1122
|
|
|
1154
1123
|
|
|
1155
1124
|
template <int DIMS, int DIMR> friend class Ng_ElementTransformation;
|
|
@@ -1169,10 +1138,11 @@ namespace ngcomp
|
|
|
1169
1138
|
Returns the global number of the node.
|
|
1170
1139
|
Currently, this function works only for vertex-nodes.
|
|
1171
1140
|
*/
|
|
1172
|
-
|
|
1141
|
+
/*
|
|
1173
1142
|
[[deprecated("should not need global numbers")]]
|
|
1174
1143
|
size_t GetGlobalNodeNum (NodeId node) const;
|
|
1175
|
-
|
|
1144
|
+
*/
|
|
1145
|
+
|
|
1176
1146
|
size_t GetGlobalVertexNum (int locnum) const;
|
|
1177
1147
|
|
|
1178
1148
|
FlatArray<int> GetDistantProcs (NodeId node) const
|
|
@@ -1357,21 +1327,21 @@ namespace ngcomp
|
|
|
1357
1327
|
for (auto p : GetDistantProcs(Node(nt, i)))
|
|
1358
1328
|
dist_data[p][cnt[p]++] = data[i];
|
|
1359
1329
|
|
|
1360
|
-
|
|
1330
|
+
NgMPI_Requests requests;
|
|
1361
1331
|
for (auto i : cnt.Range())
|
|
1362
1332
|
if (cnt[i])
|
|
1363
1333
|
{
|
|
1364
|
-
requests
|
|
1365
|
-
requests
|
|
1334
|
+
requests += comm.ISend(dist_data[i], i, NG_MPI_TAG_SOLVE);
|
|
1335
|
+
requests += comm.IRecv(recv_data[i], i, NG_MPI_TAG_SOLVE);
|
|
1366
1336
|
}
|
|
1367
|
-
|
|
1337
|
+
requests.WaitAll();
|
|
1368
1338
|
|
|
1369
1339
|
cnt = 0;
|
|
1370
|
-
|
|
1340
|
+
auto type = GetMPIType<T>();
|
|
1371
1341
|
for (auto i : Range(GetNNodes(nt)))
|
|
1372
1342
|
for (auto p : GetDistantProcs(Node(nt, i)))
|
|
1373
1343
|
NG_MPI_Reduce_local (&recv_data[p][cnt[p]++],
|
|
1374
|
-
|
|
1344
|
+
&data[i], 1, type, op);
|
|
1375
1345
|
}
|
|
1376
1346
|
|
|
1377
1347
|
|
netgen/include/mgpre.hpp
CHANGED
netgen/include/mptools.hpp
CHANGED
|
@@ -813,7 +813,6 @@ c
|
|
|
813
813
|
scale = newscale;
|
|
814
814
|
}
|
|
815
815
|
|
|
816
|
-
|
|
817
816
|
template <typename TARGET>
|
|
818
817
|
void Transform (MultiPole<TARGET> & target, Vec<3> dist) const
|
|
819
818
|
{
|
|
@@ -2095,12 +2094,12 @@ c
|
|
|
2095
2094
|
template <typename TARGET>
|
|
2096
2095
|
void ShiftZ (double z, MultiPole<TARGET> & target) { mp.ShiftZ(z, target); }
|
|
2097
2096
|
|
|
2097
|
+
using CoefficientFunction::Transform;
|
|
2098
2098
|
template <typename TARGET>
|
|
2099
2099
|
void Transform (MultiPoleCF<TARGET> & target)
|
|
2100
2100
|
{
|
|
2101
2101
|
mp.Transform (target.MP(), target.Center()-center);
|
|
2102
2102
|
}
|
|
2103
|
-
|
|
2104
2103
|
};
|
|
2105
2104
|
|
|
2106
2105
|
|
netgen/include/multivector.hpp
CHANGED
netgen/include/ngsobject.hpp
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#define FILE_NGSOBJECT
|
|
3
3
|
|
|
4
4
|
/*********************************************************************/
|
|
5
|
-
/* File: ngsobject.
|
|
5
|
+
/* File: ngsobject.hpp */
|
|
6
6
|
/* Author: Joachim Schoeberl */
|
|
7
7
|
/* Date: 2. Aug. 2000 */
|
|
8
8
|
/*********************************************************************/
|
netgen/include/nodalhofe.hpp
CHANGED
|
@@ -29,8 +29,11 @@ namespace ngfem
|
|
|
29
29
|
using ET_trait<ET>::PolDimension;
|
|
30
30
|
using ET_trait<ET>::PolBubbleDimension;
|
|
31
31
|
|
|
32
|
+
|
|
32
33
|
public:
|
|
33
34
|
using VertexOrientedFE<ET>::SetVertexNumbers;
|
|
35
|
+
NodalHOFE * SetVertexNumbers (FlatArray<int> vnums) override
|
|
36
|
+
{ VertexOrientedFE<ELEMENT_TYPE(ET)>::SetVertexNumbers(vnums); return this; } // cast for msvc ?
|
|
34
37
|
using ET_trait<ET>::ElementType;
|
|
35
38
|
|
|
36
39
|
/// builds a functional element of order aorder.
|
|
@@ -25,8 +25,8 @@ namespace ngcomp
|
|
|
25
25
|
Array<IVec<2> > order_facet;
|
|
26
26
|
Array<bool> fine_facet;
|
|
27
27
|
|
|
28
|
-
int ndof;
|
|
29
|
-
Array<int> ndlevel;
|
|
28
|
+
// int ndof;
|
|
29
|
+
// Array<int> ndlevel;
|
|
30
30
|
bool var_order;
|
|
31
31
|
bool print;
|
|
32
32
|
|
|
@@ -51,9 +51,8 @@ namespace ngcomp
|
|
|
51
51
|
virtual void SetOrder (NodeId ni, int order) override;
|
|
52
52
|
virtual int GetOrder (NodeId ni) const override;
|
|
53
53
|
|
|
54
|
-
virtual size_t GetNDof() const throw() override { return ndof; }
|
|
55
|
-
|
|
56
|
-
virtual size_t GetNDofLevel ( int i ) const override { return ndlevel[i]; }
|
|
54
|
+
// virtual size_t GetNDof() const throw() override { return ndof; }
|
|
55
|
+
// virtual size_t GetNDofLevel ( int i ) const override { return ndlevel[i]; }
|
|
57
56
|
|
|
58
57
|
virtual FlatArray<VorB> GetDualShapeNodes (VorB vb) const override;
|
|
59
58
|
|
netgen/include/order.hpp
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#define FILE_ORDER
|
|
3
3
|
|
|
4
4
|
/* *************************************************************************/
|
|
5
|
-
/* File: order.
|
|
5
|
+
/* File: order.hpp */
|
|
6
6
|
/* Author: Joachim Schoeberl */
|
|
7
7
|
/* Date: 18. Jun. 97 */
|
|
8
8
|
/* *************************************************************************/
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
namespace ngla
|
|
12
12
|
{
|
|
13
|
+
using namespace ngcore;
|
|
14
|
+
using namespace ngstd;
|
|
13
15
|
|
|
14
16
|
/*
|
|
15
17
|
reordering for sparse cholesky factoriztion
|