ngsolve 6.2.2404.post109.dev0__cp39-cp39-win_amd64.whl → 6.2.2406.post112.dev1__cp39-cp39-win_amd64.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 +30 -19
- netgen/include/basevector.hpp +43 -71
- netgen/include/bdbequations.hpp +14 -3
- 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/coefficient.hpp +6 -2
- 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 +6 -0
- netgen/include/elementtopology.hpp +0 -3
- netgen/include/expr.hpp +13 -8
- netgen/include/fespace.hpp +12 -14
- netgen/include/finiteelement.hpp +7 -7
- netgen/include/globalspace.hpp +28 -2
- netgen/include/gridfunction.hpp +4 -0
- netgen/include/h1amg.hpp +3 -1
- netgen/include/h1hofe.hpp +1 -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/integratorcf.hpp +14 -9
- 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 +30 -51
- netgen/include/mgpre.hpp +1 -1
- netgen/include/mptools.hpp +2145 -0
- 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/normalfacetsurfacefespace.hpp +1 -1
- 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/shapefunction_utils.hpp +40 -1
- netgen/include/sparsecholesky.hpp +4 -0
- netgen/include/sparsematrix.hpp +25 -43
- netgen/include/sparsematrix_dyn.hpp +2 -0
- netgen/include/sparsematrix_impl.hpp +66 -1
- netgen/include/special_matrix.hpp +7 -134
- netgen/include/statushandler.hpp +7 -0
- netgen/include/symbolicintegrator.hpp +2 -1
- netgen/include/tensorcoefficient.hpp +56 -54
- netgen/include/tpdiffop.hpp +1 -0
- netgen/include/tpintrule.hpp +2 -0
- netgen/include/umfpackinverse.hpp +58 -30
- netgen/include/vector.hpp +8 -2
- netgen/include/voxelcoefficientfunction.hpp +2 -0
- netgen/include/vvector.hpp +10 -1
- netgen/lib/libngsolve.lib +0 -0
- netgen/libngsolve.dll +0 -0
- ngsolve/_scikit_build_core_dependencies.py +8 -1
- ngsolve/cmake/NGSolveConfig.cmake +5 -5
- ngsolve/config/config.py +6 -6
- ngsolve/config.py +6 -6
- ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve/demos/__init__.py +0 -0
- ngsolve/demos/howto/__init__.py +0 -0
- ngsolve/demos/howto/hhj.py +44 -0
- ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve/demos/howto/mixed.py +30 -0
- ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve/demos/howto/pickling.py +26 -0
- ngsolve/demos/howto/pml.py +31 -0
- ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve/demos/intro/__init__.py +0 -0
- ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve/demos/intro/cmagnet.py +62 -0
- ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve/demos/intro/poisson.py +41 -0
- ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve/internal.py +5 -0
- ngsolve/ngslib.pyd +0 -0
- {ngsolve-6.2.2404.post109.dev0.dist-info → ngsolve-6.2.2406.post112.dev1.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2404.post109.dev0.dist-info → ngsolve-6.2.2406.post112.dev1.dist-info}/RECORD +137 -104
- {ngsolve-6.2.2404.post109.dev0.dist-info → ngsolve-6.2.2406.post112.dev1.dist-info}/WHEEL +1 -1
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/Scripts/ngsolve.tcl +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2404.post109.dev0.data → ngsolve-6.2.2406.post112.dev1.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2404.post109.dev0.dist-info → ngsolve-6.2.2406.post112.dev1.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2404.post109.dev0.dist-info → ngsolve-6.2.2406.post112.dev1.dist-info}/top_level.txt +0 -0
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,14 +213,18 @@ 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;
|
|
249
225
|
public:
|
|
250
226
|
SimpleSignal updateSignal;
|
|
227
|
+
static std::true_type shallow_archive;
|
|
251
228
|
|
|
252
229
|
/// for achiving ...
|
|
253
230
|
MeshAccess ();
|
|
@@ -661,7 +638,7 @@ namespace ngcomp
|
|
|
661
638
|
|
|
662
639
|
void SetDeformation (shared_ptr<GridFunction> def = nullptr);
|
|
663
640
|
|
|
664
|
-
|
|
641
|
+
shared_ptr<GridFunction> GetDeformation () const
|
|
665
642
|
{
|
|
666
643
|
return deformation;
|
|
667
644
|
}
|
|
@@ -816,15 +793,6 @@ namespace ngcomp
|
|
|
816
793
|
void GetFaceEdges (int fnr, Array<int> & edges) const;
|
|
817
794
|
INLINE auto GetFaceEdges (size_t fnr) const
|
|
818
795
|
{ return ArrayObject(mesh.GetFaceEdges(fnr)); }
|
|
819
|
-
/*
|
|
820
|
-
{
|
|
821
|
-
ArrayMem<int,4> f2ed;
|
|
822
|
-
GetFaceEdges (fnr, f2ed);
|
|
823
|
-
f2ed.NothingToDelete(); // dynamic allocation never needed
|
|
824
|
-
return f2ed;
|
|
825
|
-
}
|
|
826
|
-
*/
|
|
827
|
-
|
|
828
796
|
void GetEdgeFaces (int enr, Array<int> & faces) const;
|
|
829
797
|
/// returns elements connected to a face
|
|
830
798
|
void GetFaceElements (int fnr, Array<int> & elnums) const;
|
|
@@ -910,7 +878,6 @@ namespace ngcomp
|
|
|
910
878
|
}
|
|
911
879
|
|
|
912
880
|
|
|
913
|
-
// void GetVertexElements (int vnr, Array<int> & elnrs) const;
|
|
914
881
|
/// element order stored in Netgen
|
|
915
882
|
int GetElOrder (int enr) const
|
|
916
883
|
{ return mesh.GetElementOrder (enr+1); }
|
|
@@ -1052,11 +1019,11 @@ namespace ngcomp
|
|
|
1052
1019
|
}
|
|
1053
1020
|
}
|
|
1054
1021
|
|
|
1055
|
-
|
|
1022
|
+
/*
|
|
1056
1023
|
// (old style optimization)
|
|
1057
1024
|
[[deprecated("functionality not useful anymore, just remove function call!")]]
|
|
1058
1025
|
void SetPointSearchStartElement(const int el) const;
|
|
1059
|
-
|
|
1026
|
+
*/
|
|
1060
1027
|
|
|
1061
1028
|
|
|
1062
1029
|
ElementId FindElementOfPoint (FlatVector<double> point,
|
|
@@ -1082,6 +1049,7 @@ namespace ngcomp
|
|
|
1082
1049
|
{ return GetElement(ElementId(VOL,elnr)).is_curved; }
|
|
1083
1050
|
// { return bool (Ng_IsElementCurved (elnr+1)); }
|
|
1084
1051
|
|
|
1052
|
+
/*
|
|
1085
1053
|
[[deprecated("Use GetPeriodicNodes(NT_VERTEX, pairs) instead!")]]
|
|
1086
1054
|
void GetPeriodicVertices ( Array<IVec<2> > & pairs) const;
|
|
1087
1055
|
[[deprecated("Use GetNPeriodicNodes(NT_VERTEX) instead!")]]
|
|
@@ -1099,10 +1067,11 @@ namespace ngcomp
|
|
|
1099
1067
|
void GetPeriodicEdges (int idnr, Array<IVec<2> > & pairs) const;
|
|
1100
1068
|
[[deprecated("Use GetPeriodicNodes(NT_EDGE, idnr).Size() instead")]]
|
|
1101
1069
|
int GetNPairsPeriodicEdges (int idnr) const;
|
|
1102
|
-
|
|
1070
|
+
*/
|
|
1071
|
+
|
|
1103
1072
|
int GetNPeriodicIdentifications() const
|
|
1104
1073
|
{
|
|
1105
|
-
return periodic_node_pairs[NT_VERTEX]
|
|
1074
|
+
return periodic_node_pairs[NT_VERTEX].Size();
|
|
1106
1075
|
}
|
|
1107
1076
|
// get number of all periodic nodes of nodetype nt
|
|
1108
1077
|
size_t GetNPeriodicNodes(NODE_TYPE nt) const;
|
|
@@ -1146,9 +1115,10 @@ namespace ngcomp
|
|
|
1146
1115
|
|
|
1147
1116
|
// void PrecomputeGeometryData(int intorder);
|
|
1148
1117
|
|
|
1118
|
+
/*
|
|
1149
1119
|
void InitPointCurve(double red = 1, double green = 0, double blue = 0) const;
|
|
1150
1120
|
void AddPointCurvePoint(const Vec<3> & point) const;
|
|
1151
|
-
|
|
1121
|
+
*/
|
|
1152
1122
|
|
|
1153
1123
|
|
|
1154
1124
|
template <int DIMS, int DIMR> friend class Ng_ElementTransformation;
|
|
@@ -1168,10 +1138,11 @@ namespace ngcomp
|
|
|
1168
1138
|
Returns the global number of the node.
|
|
1169
1139
|
Currently, this function works only for vertex-nodes.
|
|
1170
1140
|
*/
|
|
1171
|
-
|
|
1141
|
+
/*
|
|
1172
1142
|
[[deprecated("should not need global numbers")]]
|
|
1173
1143
|
size_t GetGlobalNodeNum (NodeId node) const;
|
|
1174
|
-
|
|
1144
|
+
*/
|
|
1145
|
+
|
|
1175
1146
|
size_t GetGlobalVertexNum (int locnum) const;
|
|
1176
1147
|
|
|
1177
1148
|
FlatArray<int> GetDistantProcs (NodeId node) const
|
|
@@ -1228,6 +1199,8 @@ namespace ngcomp
|
|
|
1228
1199
|
operator const BitArray & () const { return *mask; }
|
|
1229
1200
|
shared_ptr<BitArray> MaskPtr() { return mask; }
|
|
1230
1201
|
const shared_ptr<MeshAccess> & Mesh() const { return mesh; }
|
|
1202
|
+
void DoArchive(Archive& ar)
|
|
1203
|
+
{ ar & mesh & vb & mask; }
|
|
1231
1204
|
Region operator+ (const Region & r2) const
|
|
1232
1205
|
{
|
|
1233
1206
|
return Region (mesh, vb, BitArray(*mask).Or(r2.Mask()));
|
|
@@ -1281,6 +1254,12 @@ namespace ngcomp
|
|
|
1281
1254
|
MakeTrafoCF(shared_ptr<CoefficientFunction> func,
|
|
1282
1255
|
shared_ptr<CoefficientFunction> trafo,
|
|
1283
1256
|
Region region);
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
NGS_DLL_HEADER
|
|
1260
|
+
shared_ptr<CoefficientFunction> NumElsOnFacetCF ();
|
|
1261
|
+
|
|
1262
|
+
|
|
1284
1263
|
|
|
1285
1264
|
/**
|
|
1286
1265
|
Controls the progress - output.
|
|
@@ -1348,21 +1327,21 @@ namespace ngcomp
|
|
|
1348
1327
|
for (auto p : GetDistantProcs(Node(nt, i)))
|
|
1349
1328
|
dist_data[p][cnt[p]++] = data[i];
|
|
1350
1329
|
|
|
1351
|
-
|
|
1330
|
+
NgMPI_Requests requests;
|
|
1352
1331
|
for (auto i : cnt.Range())
|
|
1353
1332
|
if (cnt[i])
|
|
1354
1333
|
{
|
|
1355
|
-
requests
|
|
1356
|
-
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);
|
|
1357
1336
|
}
|
|
1358
|
-
|
|
1337
|
+
requests.WaitAll();
|
|
1359
1338
|
|
|
1360
1339
|
cnt = 0;
|
|
1361
|
-
|
|
1340
|
+
auto type = GetMPIType<T>();
|
|
1362
1341
|
for (auto i : Range(GetNNodes(nt)))
|
|
1363
1342
|
for (auto p : GetDistantProcs(Node(nt, i)))
|
|
1364
1343
|
NG_MPI_Reduce_local (&recv_data[p][cnt[p]++],
|
|
1365
|
-
|
|
1344
|
+
&data[i], 1, type, op);
|
|
1366
1345
|
}
|
|
1367
1346
|
|
|
1368
1347
|
|