Merge branch 'occ_propagete_maxh_later' into 'master'

Propagate maxh to children only in occgeom constructor

See merge request ngsolve/netgen!648
This commit is contained in:
Hochsteger, Matthias 2024-04-26 17:10:30 +02:00
commit 2982427d34
3 changed files with 20 additions and 6 deletions

View File

@ -16,6 +16,7 @@ namespace netgen
OCCSolid(TopoDS_Shape dshape) OCCSolid(TopoDS_Shape dshape)
: solid(TopoDS::Solid(dshape)) : solid(TopoDS::Solid(dshape))
{ } { }
TopoDS_Solid& GetShape() { return solid; }
}; };
} }

View File

@ -1261,6 +1261,24 @@ namespace netgen
} }
} }
// Propagate maxh to children
for(auto& solid : solids)
{
auto& shape = static_cast<OCCSolid&>(*solid).GetShape();
if(!OCCGeometry::HaveProperties(shape))
continue;
for(auto& f : GetFaces(shape))
{
auto& face = GetFace(f);
face.properties.maxh = min2(face.properties.maxh,
GetProperties(shape).maxh);
}
}
for(auto& face : faces)
for(auto& edge : face->edges)
edge->properties.maxh = min2(edge->properties.maxh,
face->properties.maxh);
// Add identifications // Add identifications
auto add_identifications = [&](auto & shapes, auto & shape_map) auto add_identifications = [&](auto & shapes, auto & shape_map)
{ {

View File

@ -836,12 +836,7 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m)
}, },
[](TopoDS_Shape& self, double val) [](TopoDS_Shape& self, double val)
{ {
for (auto typ : { TopAbs_SOLID, TopAbs_FACE, TopAbs_EDGE, TopAbs_VERTEX }) OCCGeometry::GetProperties(self).maxh = val;
for (TopExp_Explorer e(self, typ); e.More(); e.Next())
{
auto & maxh = OCCGeometry::GetProperties(e.Current()).maxh;
maxh = min2(val, maxh);
}
}, "maximal mesh-size for shape") }, "maximal mesh-size for shape")
.def_property("hpref", .def_property("hpref",