ngsolve 6.2.2406.post36.dev1__cp313-cp313-macosx_10_15_universal2.whl → 6.2.2406.post111.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.

Files changed (102) hide show
  1. netgen/include/arnoldi.hpp +3 -0
  2. netgen/include/basematrix.hpp +9 -18
  3. netgen/include/basevector.hpp +43 -71
  4. netgen/include/bilinearform.hpp +8 -59
  5. netgen/include/blockjacobi.hpp +3 -0
  6. netgen/include/cg.hpp +3 -0
  7. netgen/include/chebyshev.hpp +3 -0
  8. netgen/include/comp.hpp +0 -4
  9. netgen/include/diagonalmatrix.hpp +154 -0
  10. netgen/include/eigen.hpp +3 -0
  11. netgen/include/elementbyelement.hpp +4 -0
  12. netgen/include/elementtopology.hpp +0 -3
  13. netgen/include/fespace.hpp +11 -13
  14. netgen/include/h1amg.hpp +3 -1
  15. netgen/include/hcurlhdivfes.hpp +2 -0
  16. netgen/include/hcurlhofespace.hpp +4 -3
  17. netgen/include/hdivfes.hpp +3 -3
  18. netgen/include/hdivhosurfacefespace.hpp +3 -3
  19. netgen/include/intrule.hpp +15 -1
  20. netgen/include/jacobi.hpp +3 -0
  21. netgen/include/la.hpp +1 -13
  22. netgen/include/matrix.hpp +21 -0
  23. netgen/include/meshaccess.hpp +15 -45
  24. netgen/include/mgpre.hpp +1 -1
  25. netgen/include/multivector.hpp +2 -0
  26. netgen/include/ngsobject.hpp +1 -1
  27. netgen/include/normalfacetfespace.hpp +4 -5
  28. netgen/include/order.hpp +3 -1
  29. netgen/include/parallel_matrices.hpp +5 -0
  30. netgen/include/paralleldofs.hpp +13 -51
  31. netgen/include/parallelngs.hpp +2 -1
  32. netgen/include/parallelvector.hpp +5 -2
  33. netgen/include/pardisoinverse.hpp +1 -0
  34. netgen/include/periodic.hpp +1 -0
  35. netgen/include/preconditioner.hpp +3 -1
  36. netgen/include/sparsecholesky.hpp +4 -0
  37. netgen/include/sparsematrix.hpp +8 -41
  38. netgen/include/sparsematrix_dyn.hpp +2 -0
  39. netgen/include/sparsematrix_impl.hpp +66 -1
  40. netgen/include/special_matrix.hpp +3 -138
  41. netgen/include/tpintrule.hpp +2 -0
  42. netgen/include/umfpackinverse.hpp +1 -1
  43. netgen/include/vector.hpp +6 -1
  44. netgen/include/vvector.hpp +10 -1
  45. netgen/libngbla.dylib +0 -0
  46. netgen/libngcomp.dylib +0 -0
  47. netgen/libngfem.dylib +0 -0
  48. netgen/libngla.dylib +0 -0
  49. netgen/libngsolve.dylib +0 -0
  50. netgen/libngstd.dylib +0 -0
  51. ngsolve/__init__.pyi +2 -2
  52. ngsolve/cmake/NGSolveConfig.cmake +2 -2
  53. ngsolve/comp/__init__.pyi +94 -0
  54. ngsolve/config/__init__.pyi +6 -6
  55. ngsolve/config/config.py +5 -5
  56. ngsolve/config/config.pyi +6 -6
  57. ngsolve/config.py +5 -5
  58. ngsolve/demos/intro/poisson.py +1 -1
  59. ngsolve/directsolvers.pyi +1 -1
  60. ngsolve/krylovspace.pyi +2 -2
  61. ngsolve/ngslib.so +0 -0
  62. ngsolve/nonlinearsolvers.pyi +1 -1
  63. ngsolve/timestepping.pyi +3 -3
  64. ngsolve/timing.pyi +1 -1
  65. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngscxx +2 -2
  66. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngsld +1 -1
  67. {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/METADATA +2 -2
  68. {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/RECORD +102 -101
  69. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/Netgen.icns +0 -0
  70. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngsolve.tcl +0 -0
  71. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/bin/ngspy +0 -0
  72. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/beam.geo +0 -0
  73. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/beam.vol +0 -0
  74. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/chip.in2d +0 -0
  75. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/chip.vol +0 -0
  76. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coil.geo +0 -0
  77. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coil.vol +0 -0
  78. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coilshield.geo +0 -0
  79. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/coilshield.vol +0 -0
  80. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/cube.geo +0 -0
  81. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/cube.vol +0 -0
  82. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  83. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  84. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d1_square.pde +0 -0
  85. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d2_chip.pde +0 -0
  86. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  87. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d4_cube.pde +0 -0
  88. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d5_beam.pde +0 -0
  89. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  90. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d7_coil.pde +0 -0
  91. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  92. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  93. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  94. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  95. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  96. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/shaft.geo +0 -0
  97. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/shaft.vol +0 -0
  98. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/square.in2d +0 -0
  99. {ngsolve-6.2.2406.post36.dev1.data → ngsolve-6.2.2406.post111.dev1.data}/data/share/ngsolve/square.vol +0 -0
  100. {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/LICENSE +0 -0
  101. {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/WHEEL +0 -0
  102. {ngsolve-6.2.2406.post36.dev1.dist-info → ngsolve-6.2.2406.post111.dev1.dist-info}/top_level.txt +0 -0
@@ -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;
@@ -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
 
@@ -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
@@ -7,6 +7,9 @@
7
7
  /* Date: 06. Oct. 96 */
8
8
  /* *************************************************************************/
9
9
 
10
+
11
+ #include "sparsematrix.hpp"
12
+
10
13
  namespace ngla
11
14
  {
12
15
 
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
  {
@@ -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
- const shared_ptr<GridFunction> & GetDeformation () const
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]->Size();
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
@@ -9,7 +9,7 @@
9
9
  /*********************************************************************/
10
10
 
11
11
  #include <bilinearform.hpp>
12
- #include <la.hpp>
12
+ // #include <la.hpp>
13
13
 
14
14
  namespace ngmg
15
15
  {
@@ -7,6 +7,8 @@
7
7
  /* Date: June 2020 */
8
8
  /*********************************************************************/
9
9
 
10
+ #include "basevector.hpp"
11
+
10
12
  namespace ngla {
11
13
 
12
14
  /* TODO:
@@ -2,7 +2,7 @@
2
2
  #define FILE_NGSOBJECT
3
3
 
4
4
  /*********************************************************************/
5
- /* File: ngsobject.hh */
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.hh */
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
@@ -7,6 +7,11 @@
7
7
  /* Date: 2007,2011 */
8
8
  /* ************************************************************************/
9
9
 
10
+
11
+ #include <basematrix.hpp>
12
+ #include <sparsematrix.hpp>
13
+ #include <paralleldofs.hpp>
14
+
10
15
  namespace ngla
11
16
  {
12
17
 
@@ -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 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
- requests += comm.ISend(send_data[i], i, NG_MPI_TAG_SOLVE);
255
+ send_requests += comm.ISend(send_data[i], i, NG_MPI_TAG_SOLVE);
273
256
  if (nrecv[i])
274
- requests += comm.IRecv(recv_data[i], i, NG_MPI_TAG_SOLVE);
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
- for (int i = 0; i < GetNDofLocal(); i++)
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
@@ -1,6 +1,7 @@
1
1
  #ifndef FILE_PARALLELNGS
2
2
  #define FILE_PARALLELNGS
3
3
 
4
+ /*
4
5
  #include <ngstd.hpp>
5
6
  #include <la.hpp>
6
7
 
@@ -9,7 +10,7 @@ namespace ngparallel
9
10
  using namespace ngstd;
10
11
  using namespace ngla;
11
12
  }
12
-
13
+ */
13
14
 
14
15
  #include "parallelvector.hpp"
15
16
  #include "parallel_matrices.hpp"
@@ -7,10 +7,13 @@
7
7
  /* Date: 2007,2011 */
8
8
  /* ************************************************************************/
9
9
 
10
-
10
+ #include <vvector.hpp>
11
+ #include <multivector.hpp>
12
+ #include <paralleldofs.hpp>
11
13
 
12
14
  namespace ngla
13
15
  {
16
+
14
17
  class NGS_DLL_HEADER ParallelBaseVector : virtual public BaseVector
15
18
  {
16
19
  protected:
@@ -169,7 +172,7 @@ namespace ngla
169
172
  using ParallelBaseVector :: sreqs;
170
173
  using ParallelBaseVector :: rreqs;
171
174
 
172
- Table<SCAL> * recvvalues;
175
+ Table<SCAL> recvvalues;
173
176
 
174
177
  using S_BaseVectorPtr<TSCAL> :: pdata;
175
178
  using ParallelBaseVector :: local_vec;
@@ -15,6 +15,7 @@
15
15
 
16
16
  ////////////////////////////////////////////////////////////////////////////////
17
17
 
18
+ #include "sparsecholesky.hpp" // for SparseFactorization
18
19
 
19
20
  namespace ngla
20
21
  {
@@ -80,6 +80,7 @@ namespace ngcomp
80
80
  { space->VTransformVC(ei, vec, tt); }
81
81
 
82
82
  auto & GetVertexMap() const { return vertex_map; }
83
+ auto & GetDofMap() const { return dofmap; }
83
84
  protected:
84
85
  // overload in quasiperiodic space
85
86
  virtual void DofMapped(size_t from, size_t to, size_t idnr) { ; }
@@ -7,8 +7,10 @@
7
7
  /* Date: 10. Jul. 2000 */
8
8
  /*********************************************************************/
9
9
 
10
- #include <la.hpp>
10
+ // #include <la.hpp>
11
+ #include <basematrix.hpp>
11
12
  #include <mgpre.hpp>
13
+ #include <chebyshev.hpp>
12
14
 
13
15
  namespace ngcomp
14
16
  {
@@ -11,6 +11,10 @@
11
11
  sparse cholesky factorization
12
12
  */
13
13
 
14
+ #include "basematrix.hpp"
15
+ #include "sparsematrix.hpp"
16
+ #include "order.hpp"
17
+
14
18
  namespace ngla
15
19
  {
16
20