ngsolve 6.2.2406.post36.dev1__cp311-cp311-macosx_10_15_universal2.whl → 6.2.2406.post134.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 +3 -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/eigen.hpp +3 -0
- netgen/include/elementbyelement.hpp +6 -0
- netgen/include/elementtopology.hpp +0 -3
- netgen/include/fespace.hpp +11 -13
- netgen/include/h1amg.hpp +3 -1
- netgen/include/hcurlcurlfespace.hpp +78 -0
- 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 +15 -45
- netgen/include/mgpre.hpp +1 -1
- netgen/include/mptools.hpp +1 -1
- netgen/include/multivector.hpp +2 -0
- netgen/include/ngsobject.hpp +1 -1
- netgen/include/normalfacetfespace.hpp +4 -5
- netgen/include/order.hpp +3 -1
- netgen/include/parallel_matrices.hpp +5 -0
- netgen/include/paralleldofs.hpp +13 -51
- netgen/include/parallelngs.hpp +2 -1
- netgen/include/parallelvector.hpp +5 -2
- netgen/include/pardisoinverse.hpp +1 -0
- netgen/include/periodic.hpp +1 -0
- netgen/include/preconditioner.hpp +3 -1
- netgen/include/sparsecholesky.hpp +4 -0
- netgen/include/sparsematrix.hpp +11 -41
- netgen/include/sparsematrix_dyn.hpp +2 -0
- netgen/include/sparsematrix_impl.hpp +66 -1
- netgen/include/special_matrix.hpp +7 -138
- 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 +2 -2
- ngsolve/config/config.py +5 -5
- ngsolve/config.py +5 -5
- ngsolve/demos/intro/poisson.py +1 -1
- ngsolve/ngslib.so +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/bin/ngscxx +2 -2
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/bin/ngsld +1 -1
- {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post134.dev1.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post134.dev1.dist-info}/RECORD +95 -93
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/Netgen.icns +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/bin/ngsolve.tcl +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/bin/ngspy +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post134.dev1.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post134.dev1.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post134.dev1.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post134.dev1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#ifndef FILE_HCURLCURLFESPACE
|
|
2
|
+
#define FILE_HCURLCURLFESPACE
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/*********************************************************************/
|
|
6
|
+
/* File: hcurlcurlfespace.h */
|
|
7
|
+
/* Author: Michael Neunteufel */
|
|
8
|
+
/* Date: 2018 */
|
|
9
|
+
/*********************************************************************/
|
|
10
|
+
|
|
11
|
+
#include "fespace.hpp"
|
|
12
|
+
|
|
13
|
+
namespace ngcomp
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
class HCurlCurlFESpace : public FESpace
|
|
17
|
+
{
|
|
18
|
+
size_t ndof;
|
|
19
|
+
Array<int> first_facet_dof;
|
|
20
|
+
Array<int> first_element_dof;
|
|
21
|
+
Array<int> first_edge_dof;
|
|
22
|
+
Array<IVec<1,int> > order_edge;
|
|
23
|
+
Array<IVec<2,int> > order_facet;
|
|
24
|
+
Array<IVec<3,int> > order_inner;
|
|
25
|
+
|
|
26
|
+
Array<bool> fine_facet;
|
|
27
|
+
Array<bool> fine_edges;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
bool discontinuous;
|
|
31
|
+
bool issurfacespace;
|
|
32
|
+
int uniform_order_facet;
|
|
33
|
+
int uniform_order_inner;
|
|
34
|
+
int uniform_order_edge;
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
HCurlCurlFESpace (shared_ptr<MeshAccess> ama, const Flags & flags, bool checkflags=false);
|
|
38
|
+
|
|
39
|
+
virtual string GetClassName () const override
|
|
40
|
+
{
|
|
41
|
+
return "HCurlCurlFESpace";
|
|
42
|
+
}
|
|
43
|
+
static DocInfo GetDocu ();
|
|
44
|
+
|
|
45
|
+
void Update() override;
|
|
46
|
+
|
|
47
|
+
virtual size_t GetNDof () const throw() override { return ndof; }
|
|
48
|
+
|
|
49
|
+
virtual void SetOrder (NodeId ni, int order) override;
|
|
50
|
+
virtual int GetOrder (NodeId ni) const override;
|
|
51
|
+
|
|
52
|
+
virtual FlatArray<VorB> GetDualShapeNodes (VorB vb) const override
|
|
53
|
+
{
|
|
54
|
+
static VorB nodes[] = { VOL, BND, BBND };
|
|
55
|
+
return FlatArray<VorB> (ma->GetDimension()-int(vb), &nodes[0]);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
virtual FiniteElement & GetFE (ElementId ei, Allocator & alloc) const override;
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
virtual void GetVertexDofNrs (int vnr, Array<int> & dnums) const override
|
|
62
|
+
{
|
|
63
|
+
dnums.SetSize0();
|
|
64
|
+
}
|
|
65
|
+
virtual void GetEdgeDofNrs (int ednr, Array<int> & dnums) const override;
|
|
66
|
+
|
|
67
|
+
virtual void GetFaceDofNrs (int fanr, Array<int> & dnums) const override;
|
|
68
|
+
virtual void GetInnerDofNrs (int elnr, Array<int> & dnums) const override;
|
|
69
|
+
|
|
70
|
+
void GetDofNrs (ElementId ei, Array<int> & dnums) const override;
|
|
71
|
+
|
|
72
|
+
virtual void UpdateCouplingDofArray() override;
|
|
73
|
+
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#endif
|
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
|
netgen/include/mgpre.hpp
CHANGED
netgen/include/mptools.hpp
CHANGED
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
|
/*********************************************************************/
|
|
@@ -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
|
netgen/include/paralleldofs.hpp
CHANGED
|
@@ -8,10 +8,14 @@
|
|
|
8
8
|
/**************************************************************************/
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
#include <core/mpi_wrapper.hpp>
|
|
12
|
+
#include <ngstd.hpp>
|
|
11
13
|
|
|
12
14
|
namespace ngla
|
|
13
15
|
{
|
|
16
|
+
using namespace ngstd;
|
|
14
17
|
|
|
18
|
+
|
|
15
19
|
#ifdef PARALLEL
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -133,7 +137,7 @@ namespace ngla
|
|
|
133
137
|
public:
|
|
134
138
|
ParallelDofs (NgMPI_Comm acomm, Table<int> && adist_procs,
|
|
135
139
|
int dim = 1, bool iscomplex = false)
|
|
136
|
-
: es(dim), complex(iscomplex)
|
|
140
|
+
: ndof(adist_procs.Size()), es(dim), complex(iscomplex)
|
|
137
141
|
{ ; }
|
|
138
142
|
|
|
139
143
|
int GetNDofLocal () const { return ndof; }
|
|
@@ -223,18 +227,6 @@ namespace ngla
|
|
|
223
227
|
nrecv = 0;
|
|
224
228
|
|
|
225
229
|
/** Count send/recv size **/
|
|
226
|
-
/*
|
|
227
|
-
for (int i = 0; i < GetNDofLocal(); i++) {
|
|
228
|
-
auto dps = GetDistantProcs(i);
|
|
229
|
-
if(!dps.Size()) continue;
|
|
230
|
-
int master = min2(rank, dps[0]);
|
|
231
|
-
if(rank==master)
|
|
232
|
-
for(auto p:dps)
|
|
233
|
-
nrecv[p]++;
|
|
234
|
-
else
|
|
235
|
-
nsend[master]++;
|
|
236
|
-
}
|
|
237
|
-
*/
|
|
238
230
|
for (int i = 0; i < GetNDofLocal(); i++)
|
|
239
231
|
if (auto dps = GetDistantProcs(i); dps.Size())
|
|
240
232
|
{
|
|
@@ -244,55 +236,39 @@ namespace ngla
|
|
|
244
236
|
else
|
|
245
237
|
nsend[dps[0]]++;
|
|
246
238
|
}
|
|
247
|
-
|
|
248
239
|
|
|
249
240
|
Table<T> send_data(nsend);
|
|
250
241
|
Table<T> recv_data(nrecv);
|
|
251
242
|
|
|
252
243
|
/** Fill send_data **/
|
|
253
244
|
nsend = 0;
|
|
254
|
-
/*
|
|
255
|
-
for (int i = 0; i < GetNDofLocal(); i++) {
|
|
256
|
-
auto dps = GetDistantProcs(i);
|
|
257
|
-
if(!dps.Size()) continue;
|
|
258
|
-
int master = min2(rank, dps[0]);
|
|
259
|
-
if(master!=rank)
|
|
260
|
-
send_data[master][nsend[master]++] = data[i];
|
|
261
|
-
}
|
|
262
|
-
*/
|
|
263
245
|
for (int i = 0; i < GetNDofLocal(); i++)
|
|
264
246
|
if (auto dps = GetDistantProcs(i); dps.Size())
|
|
265
247
|
if (rank > dps[0])
|
|
266
248
|
send_data[dps[0]][nsend[dps[0]]++] = data[i];
|
|
267
249
|
|
|
268
|
-
NgMPI_Requests
|
|
250
|
+
NgMPI_Requests send_requests;
|
|
251
|
+
NgMPI_Requests recv_requests;
|
|
269
252
|
for (int i = 0; i < ntasks; i++)
|
|
270
253
|
{
|
|
271
254
|
if (nsend[i])
|
|
272
|
-
|
|
255
|
+
send_requests += comm.ISend(send_data[i], i, NG_MPI_TAG_SOLVE);
|
|
273
256
|
if (nrecv[i])
|
|
274
|
-
|
|
257
|
+
recv_requests += comm.IRecv(recv_data[i], i, NG_MPI_TAG_SOLVE);
|
|
275
258
|
}
|
|
276
|
-
requests.WaitAll();
|
|
277
259
|
|
|
278
260
|
Array<int> cnt(ntasks);
|
|
279
261
|
cnt = 0;
|
|
280
262
|
|
|
281
263
|
NG_MPI_Datatype type = GetMPIType<T>();
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if (IsMasterDof(i))
|
|
285
|
-
{
|
|
286
|
-
FlatArray<int> distprocs = GetDistantProcs (i);
|
|
287
|
-
for (int j = 0; j < distprocs.Size(); j++)
|
|
288
|
-
NG_MPI_Reduce_local (&recv_data[distprocs[j]][cnt[distprocs[j]]++],
|
|
289
|
-
&data[i], 1, type, op);
|
|
290
|
-
}
|
|
291
|
-
*/
|
|
264
|
+
|
|
265
|
+
recv_requests.WaitAll();
|
|
292
266
|
for (int i = 0; i < GetNDofLocal(); i++)
|
|
293
267
|
if (IsMasterDof(i))
|
|
294
268
|
for (auto p : GetDistantProcs (i))
|
|
295
269
|
NG_MPI_Reduce_local (&recv_data[p][cnt[p]++], &data[i], 1, type, op);
|
|
270
|
+
|
|
271
|
+
send_requests.WaitAll();
|
|
296
272
|
}
|
|
297
273
|
|
|
298
274
|
|
|
@@ -359,20 +335,6 @@ namespace ngla
|
|
|
359
335
|
|
|
360
336
|
#endif //PARALLEL
|
|
361
337
|
|
|
362
|
-
|
|
363
|
-
class DofRange : public T_Range<size_t>
|
|
364
|
-
{
|
|
365
|
-
shared_ptr<ParallelDofs> pardofs;
|
|
366
|
-
public:
|
|
367
|
-
DofRange () { }
|
|
368
|
-
DofRange (T_Range<size_t> range, shared_ptr<ParallelDofs> apardofs)
|
|
369
|
-
: T_Range<size_t>(range), pardofs(apardofs) { ; }
|
|
370
|
-
shared_ptr<ParallelDofs> GetParallelDofs() const { return pardofs; }
|
|
371
|
-
};
|
|
372
|
-
|
|
373
|
-
|
|
374
338
|
}
|
|
375
339
|
|
|
376
|
-
|
|
377
|
-
|
|
378
340
|
#endif
|