mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
CreatePoint2ElementTable with optional points bitarray
This commit is contained in:
parent
7623289c27
commit
6c37ce33b0
@ -1598,20 +1598,20 @@ namespace netgen
|
|||||||
// tempmesh.Save ("tempmesh.vol");
|
// tempmesh.Save ("tempmesh.vol");
|
||||||
|
|
||||||
{
|
{
|
||||||
MeshOptimize3d meshopt(mp);
|
|
||||||
tempmesh.Compress();
|
|
||||||
tempmesh.FindOpenElements ();
|
|
||||||
RegionTaskManager rtm(mp.parallel_meshing ? mp.nthreads : 0);
|
RegionTaskManager rtm(mp.parallel_meshing ? mp.nthreads : 0);
|
||||||
for (auto i : Range(10))
|
for (int i = 1; i <= 4; i++)
|
||||||
{
|
{
|
||||||
|
tempmesh.FindOpenElements ();
|
||||||
|
|
||||||
PrintMessage (5, "Num open: ", tempmesh.GetNOpenElements());
|
PrintMessage (5, "Num open: ", tempmesh.GetNOpenElements());
|
||||||
|
tempmesh.CalcSurfacesOfNode ();
|
||||||
|
|
||||||
if(i%5==0)
|
tempmesh.FreeOpenElementsEnvironment (1);
|
||||||
tempmesh.FreeOpenElementsEnvironment (1);
|
|
||||||
|
|
||||||
|
MeshOptimize3d meshopt(mp);
|
||||||
|
// tempmesh.CalcSurfacesOfNode();
|
||||||
meshopt.SwapImprove(tempmesh, OPT_CONFORM);
|
meshopt.SwapImprove(tempmesh, OPT_CONFORM);
|
||||||
}
|
}
|
||||||
tempmesh.Compress();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshQuality3d (tempmesh);
|
MeshQuality3d (tempmesh);
|
||||||
|
@ -6545,14 +6545,34 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Table<ElementIndex, PointIndex> Mesh :: CreatePoint2ElementTable() const
|
Table<ElementIndex, PointIndex> Mesh :: CreatePoint2ElementTable(std::optional<BitArray> points) const
|
||||||
{
|
{
|
||||||
return ngcore::CreateSortedTable<ElementIndex, PointIndex>( volelements.Range(),
|
if(points)
|
||||||
[&](auto & table, ElementIndex ei)
|
{
|
||||||
{
|
const auto & free_points = *points;
|
||||||
for (PointIndex pi : (*this)[ei].PNums())
|
return ngcore::CreateSortedTable<ElementIndex, PointIndex>( volelements.Range(),
|
||||||
table.Add (pi, ei);
|
[&](auto & table, ElementIndex ei)
|
||||||
}, GetNP());
|
{
|
||||||
|
const auto & el = (*this)[ei];
|
||||||
|
if(el.IsDeleted())
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (PointIndex pi : el.PNums())
|
||||||
|
if(free_points[pi])
|
||||||
|
table.Add (pi, ei);
|
||||||
|
}, GetNP());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return ngcore::CreateSortedTable<ElementIndex, PointIndex>( volelements.Range(),
|
||||||
|
[&](auto & table, ElementIndex ei)
|
||||||
|
{
|
||||||
|
const auto & el = (*this)[ei];
|
||||||
|
if(el.IsDeleted())
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (PointIndex pi : el.PNums())
|
||||||
|
table.Add (pi, ei);
|
||||||
|
}, GetNP());
|
||||||
}
|
}
|
||||||
|
|
||||||
Table<SurfaceElementIndex, PointIndex> Mesh :: CreatePoint2SurfaceElementTable( int faceindex ) const
|
Table<SurfaceElementIndex, PointIndex> Mesh :: CreatePoint2SurfaceElementTable( int faceindex ) const
|
||||||
|
@ -772,7 +772,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Table<ElementIndex, PointIndex> CreatePoint2ElementTable() const;
|
Table<ElementIndex, PointIndex> CreatePoint2ElementTable(std::optional<BitArray> points = std::nullopt) const;
|
||||||
Table<SurfaceElementIndex, PointIndex> CreatePoint2SurfaceElementTable( int faceindex=0 ) const;
|
Table<SurfaceElementIndex, PointIndex> CreatePoint2SurfaceElementTable( int faceindex=0 ) const;
|
||||||
|
|
||||||
DLL_HEADER bool PureTrigMesh (int faceindex = 0) const;
|
DLL_HEADER bool PureTrigMesh (int faceindex = 0) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user