mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-27 14:20:34 +05:00
Rename blp.keep_surfaceindex to disable_curving
When disabling curving at faces, also disable it for adjacent edges
This commit is contained in:
parent
4373def54b
commit
4a1fe78ff6
@ -339,7 +339,7 @@ void BoundaryLayerTool ::CreateNewFaceDescriptors()
|
|||||||
// result in pushed through elements, since we do not (yet)
|
// result in pushed through elements, since we do not (yet)
|
||||||
// curvature through layers.
|
// curvature through layers.
|
||||||
// Therefore we disable curving for these surfaces.
|
// Therefore we disable curving for these surfaces.
|
||||||
if (!params.keep_surfaceindex)
|
if (params.disable_curving)
|
||||||
mesh.GetFaceDescriptor(i).SetSurfNr(-1);
|
mesh.GetFaceDescriptor(i).SetSurfNr(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1079,7 +1079,23 @@ void BoundaryLayerTool ::AddSegments()
|
|||||||
{
|
{
|
||||||
auto& new_segs =
|
auto& new_segs =
|
||||||
insert_only_volume_elements ? new_segments_on_moved_bnd : new_segments;
|
insert_only_volume_elements ? new_segments_on_moved_bnd : new_segments;
|
||||||
// cout << "add new segs " << endl << new_segs << endl;
|
|
||||||
|
if (params.disable_curving)
|
||||||
|
{
|
||||||
|
for (auto& seg : segments)
|
||||||
|
if (is_edge_moved[seg.si])
|
||||||
|
{
|
||||||
|
seg.epgeominfo[0].edgenr = -1;
|
||||||
|
seg.epgeominfo[0].edgenr = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& seg : new_segs)
|
||||||
|
{
|
||||||
|
seg.epgeominfo[0].edgenr = -1;
|
||||||
|
seg.epgeominfo[0].edgenr = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (have_single_segments)
|
if (have_single_segments)
|
||||||
MergeAndAddSegments(mesh, segments, new_segs);
|
MergeAndAddSegments(mesh, segments, new_segs);
|
||||||
else
|
else
|
||||||
@ -1264,6 +1280,8 @@ void BoundaryLayerTool ::ProcessParameters()
|
|||||||
|
|
||||||
void BoundaryLayerTool ::Perform()
|
void BoundaryLayerTool ::Perform()
|
||||||
{
|
{
|
||||||
|
if (domains.NumSet() == 0)
|
||||||
|
return;
|
||||||
CreateNewFaceDescriptors();
|
CreateNewFaceDescriptors();
|
||||||
CalculateGrowthVectors();
|
CalculateGrowthVectors();
|
||||||
CreateFaceDescriptorsSides();
|
CreateFaceDescriptorsSides();
|
||||||
@ -1288,6 +1306,7 @@ void BoundaryLayerTool ::Perform()
|
|||||||
if (params.limit_growth_vectors)
|
if (params.limit_growth_vectors)
|
||||||
LimitGrowthVectorLengths();
|
LimitGrowthVectorLengths();
|
||||||
|
|
||||||
|
FixEdges();
|
||||||
FixSurfaceElements();
|
FixSurfaceElements();
|
||||||
|
|
||||||
for (auto [pi, data] : growth_vector_map)
|
for (auto [pi, data] : growth_vector_map)
|
||||||
|
@ -90,6 +90,7 @@ public:
|
|||||||
void InterpolateSurfaceGrowthVectors ();
|
void InterpolateSurfaceGrowthVectors ();
|
||||||
void InterpolateGrowthVectors ();
|
void InterpolateGrowthVectors ();
|
||||||
void LimitGrowthVectorLengths ();
|
void LimitGrowthVectorLengths ();
|
||||||
|
void FixEdges ();
|
||||||
void FixSurfaceElements ();
|
void FixSurfaceElements ();
|
||||||
|
|
||||||
void InsertNewElements (FlatArray<Array<pair<SegmentIndex, int>>, SegmentIndex> segmap, const BitArray& in_surface_direction);
|
void InsertNewElements (FlatArray<Array<pair<SegmentIndex, int>>, SegmentIndex> segmap, const BitArray& in_surface_direction);
|
||||||
|
@ -365,6 +365,13 @@ void BoundaryLayerTool ::InterpolateSurfaceGrowthVectors()
|
|||||||
addGW(pi, corrections[pi]);
|
addGW(pi, corrections[pi]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BoundaryLayerTool ::FixEdges()
|
||||||
|
{
|
||||||
|
for (auto& seg : mesh.LineSegments())
|
||||||
|
if (seg.epgeominfo[0].edgenr == -1 && seg.epgeominfo[1].edgenr == -1)
|
||||||
|
seg.edgenr = -1;
|
||||||
|
}
|
||||||
|
|
||||||
void BoundaryLayerTool ::FixSurfaceElements()
|
void BoundaryLayerTool ::FixSurfaceElements()
|
||||||
{
|
{
|
||||||
static Timer tall("FixSurfaceElements");
|
static Timer tall("FixSurfaceElements");
|
||||||
|
@ -2961,7 +2961,7 @@ namespace netgen
|
|||||||
ost << "\n grow_edges: " << mp.grow_edges;
|
ost << "\n grow_edges: " << mp.grow_edges;
|
||||||
ost << "\n limit_growth_vectors: " << mp.limit_growth_vectors;
|
ost << "\n limit_growth_vectors: " << mp.limit_growth_vectors;
|
||||||
ost << "\n sides_keep_surfaceindex: " << (mp.sides_keep_surfaceindex ? ToString(*mp.sides_keep_surfaceindex) : "nullopt");
|
ost << "\n sides_keep_surfaceindex: " << (mp.sides_keep_surfaceindex ? ToString(*mp.sides_keep_surfaceindex) : "nullopt");
|
||||||
ost << "\n keep_surfaceindex: " << mp.keep_surfaceindex;
|
ost << "\n disable_curving: " << mp.disable_curving;
|
||||||
ost << endl;
|
ost << endl;
|
||||||
return ost;
|
return ost;
|
||||||
}
|
}
|
||||||
|
@ -1285,7 +1285,7 @@ namespace netgen
|
|||||||
bool grow_edges = true;
|
bool grow_edges = true;
|
||||||
bool limit_growth_vectors = true;
|
bool limit_growth_vectors = true;
|
||||||
std::optional<bool> sides_keep_surfaceindex = nullopt; // !outside by default
|
std::optional<bool> sides_keep_surfaceindex = nullopt; // !outside by default
|
||||||
bool keep_surfaceindex = false;
|
bool disable_curving = true; // disable curving affected boundaries/edges (could lead to self-intersecting volume elements)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1477,7 +1477,7 @@ py::arg("point_tolerance") = -1.)
|
|||||||
optional<variant<string, std::vector<int>>> project_boundaries,
|
optional<variant<string, std::vector<int>>> project_boundaries,
|
||||||
bool grow_edges, bool limit_growth_vectors,
|
bool grow_edges, bool limit_growth_vectors,
|
||||||
bool sides_keep_surfaceindex,
|
bool sides_keep_surfaceindex,
|
||||||
bool keep_surfaceindex)
|
bool disable_curving)
|
||||||
{
|
{
|
||||||
BoundaryLayerParameters blp;
|
BoundaryLayerParameters blp;
|
||||||
blp.boundary = boundary;
|
blp.boundary = boundary;
|
||||||
@ -1489,13 +1489,13 @@ py::arg("point_tolerance") = -1.)
|
|||||||
blp.grow_edges = grow_edges;
|
blp.grow_edges = grow_edges;
|
||||||
blp.limit_growth_vectors = limit_growth_vectors;
|
blp.limit_growth_vectors = limit_growth_vectors;
|
||||||
blp.sides_keep_surfaceindex = sides_keep_surfaceindex;
|
blp.sides_keep_surfaceindex = sides_keep_surfaceindex;
|
||||||
blp.keep_surfaceindex = keep_surfaceindex;
|
blp.disable_curving = disable_curving;
|
||||||
GenerateBoundaryLayer (self, blp);
|
GenerateBoundaryLayer (self, blp);
|
||||||
self.UpdateTopology();
|
self.UpdateTopology();
|
||||||
}, py::arg("boundary"), py::arg("thickness"), py::arg("material")=nullopt,
|
}, py::arg("boundary"), py::arg("thickness"), py::arg("material")=nullopt,
|
||||||
py::arg("domains") = ".*", py::arg("outside") = false,
|
py::arg("domains") = ".*", py::arg("outside") = false,
|
||||||
py::arg("project_boundaries")=nullopt, py::arg("grow_edges")=true, py::arg("limit_growth_vectors") = true, py::arg("sides_keep_surfaceindex")=false,
|
py::arg("project_boundaries")=nullopt, py::arg("grow_edges")=true, py::arg("limit_growth_vectors") = true, py::arg("sides_keep_surfaceindex")=false,
|
||||||
py::arg("keep_surfaceindex")=false, "Add boundary layer to mesh. see help(BoundaryLayerParameters) for details.")
|
py::arg("disable_curving")=true, "Add boundary layer to mesh. see help(BoundaryLayerParameters) for details.")
|
||||||
|
|
||||||
.def_static ("EnableTableClass", [] (string name, bool set)
|
.def_static ("EnableTableClass", [] (string name, bool set)
|
||||||
{
|
{
|
||||||
@ -1732,7 +1732,7 @@ py::arg("point_tolerance") = -1.)
|
|||||||
bool grow_edges,
|
bool grow_edges,
|
||||||
bool limit_growth_vectors,
|
bool limit_growth_vectors,
|
||||||
std::optional<bool> sides_keep_surfaceindex,
|
std::optional<bool> sides_keep_surfaceindex,
|
||||||
bool keep_surfaceindex)
|
bool disable_curving)
|
||||||
{
|
{
|
||||||
BoundaryLayerParameters blp;
|
BoundaryLayerParameters blp;
|
||||||
blp.boundary = boundary;
|
blp.boundary = boundary;
|
||||||
@ -1744,14 +1744,14 @@ py::arg("point_tolerance") = -1.)
|
|||||||
blp.grow_edges = grow_edges;
|
blp.grow_edges = grow_edges;
|
||||||
blp.limit_growth_vectors = limit_growth_vectors;
|
blp.limit_growth_vectors = limit_growth_vectors;
|
||||||
blp.sides_keep_surfaceindex = sides_keep_surfaceindex;
|
blp.sides_keep_surfaceindex = sides_keep_surfaceindex;
|
||||||
blp.keep_surfaceindex = keep_surfaceindex;
|
blp.disable_curving = disable_curving;
|
||||||
return blp;
|
return blp;
|
||||||
}),
|
}),
|
||||||
py::arg("boundary"), py::arg("thickness"), py::arg("new_material")=nullopt,
|
py::arg("boundary"), py::arg("thickness"), py::arg("new_material")=nullopt,
|
||||||
py::arg("domain") = ".*", py::arg("outside") = false,
|
py::arg("domain") = ".*", py::arg("outside") = false,
|
||||||
py::arg("project_boundaries")=nullopt, py::arg("grow_edges")=true,
|
py::arg("project_boundaries")=nullopt, py::arg("grow_edges")=true,
|
||||||
py::arg("limit_growth_vectors") = true, py::arg("sides_keep_surfaceindex")=nullopt,
|
py::arg("limit_growth_vectors") = true, py::arg("sides_keep_surfaceindex")=nullopt,
|
||||||
py::arg("keep_surfaceindex")=false,
|
py::arg("disable_curving")=true,
|
||||||
R"delimiter(
|
R"delimiter(
|
||||||
Add boundary layer to mesh.
|
Add boundary layer to mesh.
|
||||||
|
|
||||||
@ -1803,7 +1803,7 @@ project_boundaries : Optional[str] = None
|
|||||||
.def_readwrite("grow_edges", &BoundaryLayerParameters::grow_edges)
|
.def_readwrite("grow_edges", &BoundaryLayerParameters::grow_edges)
|
||||||
.def_readwrite("limit_growth_vectors", &BoundaryLayerParameters::limit_growth_vectors)
|
.def_readwrite("limit_growth_vectors", &BoundaryLayerParameters::limit_growth_vectors)
|
||||||
.def_readwrite("sides_keep_surfaceindex", &BoundaryLayerParameters::sides_keep_surfaceindex)
|
.def_readwrite("sides_keep_surfaceindex", &BoundaryLayerParameters::sides_keep_surfaceindex)
|
||||||
.def_readwrite("keep_surfaceindex", &BoundaryLayerParameters::keep_surfaceindex)
|
.def_readwrite("disable_curving", &BoundaryLayerParameters::disable_curving)
|
||||||
;
|
;
|
||||||
py::implicitly_convertible<py::dict, BoundaryLayerParameters>();
|
py::implicitly_convertible<py::dict, BoundaryLayerParameters>();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user