fix edges and new domains in BoundaryLayer2d with make_new_domain=True

This commit is contained in:
Christopher Lackner 2025-03-04 09:59:56 +01:00
parent d1a9f7ee3d
commit bc194027a2

View File

@ -243,10 +243,6 @@ namespace netgen
Array<SegmentIndex> segments;
// surface index map
Array<int> si_map(mesh.GetNFD()+2);
si_map = -1;
// int fd_old = mesh.GetNFD();
int max_edge_nr = -1;
@ -254,8 +250,8 @@ namespace netgen
for(const auto& seg : line_segments)
{
if(seg.epgeominfo[0].edgenr > max_edge_nr)
max_edge_nr = seg.epgeominfo[0].edgenr;
if(seg.edgenr > max_edge_nr)
max_edge_nr = seg.edgenr;
if(seg.domin > max_domain)
max_domain = seg.domin;
if(seg.domout > max_domain)
@ -263,6 +259,7 @@ namespace netgen
}
int new_domain = max_domain+1;
int new_edge_nr = max_edge_nr+1;
BitArray active_boundaries(max_edge_nr+1);
BitArray active_segments(nseg);
@ -288,7 +285,10 @@ namespace netgen
// int new_fd_index =
mesh.AddFaceDescriptor(new_fd);
if(should_make_new_domain)
mesh.SetBCName(new_domain-1, "mapped_" + mesh.GetBCName(domain-1));
{
mesh.SetMaterial(new_domain, "layer_" + mesh.GetMaterial(domain));
mesh.SetBCName(new_edge_nr - 1, "moved");
}
}
for(auto segi : Range(line_segments))
@ -618,8 +618,6 @@ namespace netgen
}
}
map<pair<PointIndex, PointIndex>, int> seg2edge;
// insert new elements ( and move old ones )
for(auto si : moved_segs)
{
@ -629,8 +627,6 @@ namespace netgen
auto & pm0 = mapto[seg[0]];
auto & pm1 = mapto[seg[1]];
// auto newindex = si_map[domain];
Segment s = seg;
s.geominfo[0] = {};
s.geominfo[1] = {};
@ -638,10 +634,10 @@ namespace netgen
s[1] = pm1.Last();
s[2] = PointIndex::INVALID;
auto pair = s[0] < s[1] ? make_pair(s[0], s[1]) : make_pair(s[1], s[0]);
if(seg2edge.find(pair) == seg2edge.end())
seg2edge[pair] = ++max_edge_nr;
s.edgenr = seg2edge[pair];
s.si = seg.si;
s.edgenr = new_edge_nr;
s.epgeominfo[0].edgenr = -1;
s.epgeominfo[1].edgenr = -1;
s.si = s.edgenr;
mesh.AddSegment(s);
for ( auto i : Range(thicknesses))