mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-19 01:10:33 +05:00
Merge remote-tracking branch 'origin/master' into boundarylayer_fixes
This commit is contained in:
commit
93590c8407
@ -1145,6 +1145,11 @@ struct GrowthVectorLimiter {
|
||||
moved_surfaces.SetBit(i);
|
||||
mesh.SetBCName(new_si-1, "mapped_" + name);
|
||||
}
|
||||
// curving of surfaces with boundary layers will often
|
||||
// result in pushed through elements, since we do not (yet)
|
||||
// curvature through layers.
|
||||
// Therefore we disable curving for these surfaces.
|
||||
mesh.GetFaceDescriptor(i).SetSurfNr(-1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1782,6 +1787,9 @@ struct GrowthVectorLimiter {
|
||||
if(surfacefacs[sel.GetIndex()] > 0) Swap(points[0], points[2]);
|
||||
for(auto i : Range(points))
|
||||
el[sel.PNums().Size() + i] = points[i];
|
||||
auto new_index = new_mat_nrs[sel.GetIndex()];
|
||||
if(new_index == -1)
|
||||
throw Exception("Boundary " + ToString(sel.GetIndex()) + " with name " + mesh.GetBCName(sel.GetIndex()-1) + " extruded, but no new material specified for it!");
|
||||
el.SetIndex(new_mat_nrs[sel.GetIndex()]);
|
||||
if(add_volume_element)
|
||||
mesh.AddVolumeElement(el);
|
||||
|
@ -633,8 +633,12 @@ public:
|
||||
{
|
||||
TopoDS_Wire wire = wires.back();
|
||||
wires.pop_back();
|
||||
BRepOffsetAPI_MakeOffset builder;
|
||||
builder.AddWire(wire);
|
||||
|
||||
// handle wires containing a single edge correctly, see
|
||||
// https://dev.opencascade.org/content/brepoffsetapimakeoffset-open-topodswire
|
||||
BRepBuilderAPI_MakeFace makeFace{gp_Pln{axes}};
|
||||
makeFace.Add(wire);
|
||||
BRepOffsetAPI_MakeOffset builder(makeFace.Face());
|
||||
builder.Perform(d);
|
||||
auto shape = builder.Shape();
|
||||
wires.push_back (TopoDS::Wire(shape.Reversed()));
|
||||
|
@ -2308,6 +2308,8 @@ namespace netgen
|
||||
for (sei = 0; sei < nse; sei++)
|
||||
{
|
||||
const Element2d & el = (*mesh)[sei];
|
||||
if(!SurfaceElementActive(vsol, *mesh, el))
|
||||
continue;
|
||||
|
||||
if (el.GetType() == TRIG || el.GetType() == TRIG6)
|
||||
{
|
||||
|
@ -22,7 +22,10 @@ def ReadGmsh(filename):
|
||||
|
||||
pointmap = {}
|
||||
facedescriptormap = {}
|
||||
namemap = { 0 : "default" }
|
||||
namemap = { 0 : { 0 : "default" },
|
||||
1: { 0 : "default" },
|
||||
2: { 0 : "default" },
|
||||
3: { 0 : "default" } }
|
||||
materialmap = {}
|
||||
bbcmap = {}
|
||||
|
||||
@ -80,7 +83,7 @@ def ReadGmsh(filename):
|
||||
for i in range(numnames):
|
||||
f.readline
|
||||
line = f.readline()
|
||||
namemap[int(line.split()[1])] = line.split()[2][1:-1]
|
||||
namemap[int(line.split()[0])][int(line.split()[1])] = line.split()[2][1:-1]
|
||||
|
||||
if line.split()[0] == "$Nodes":
|
||||
num = int(f.readline().split()[0])
|
||||
@ -115,7 +118,7 @@ def ReadGmsh(filename):
|
||||
else:
|
||||
index = len(bbcmap) + 1
|
||||
if len(namemap):
|
||||
mesh.SetCD2Name(index, namemap[tags[0]])
|
||||
mesh.SetCD2Name(index, namemap[1][tags[0]])
|
||||
else:
|
||||
mesh.SetCD2Name(index, "line" + str(tags[1]))
|
||||
bbcmap[tags[1]] = index
|
||||
@ -127,7 +130,7 @@ def ReadGmsh(filename):
|
||||
index = len(facedescriptormap) + 1
|
||||
fd = FaceDescriptor(bc=index)
|
||||
if len(namemap):
|
||||
fd.bcname = namemap[tags[0]]
|
||||
fd.bcname = namemap[1][tags[0]]
|
||||
else:
|
||||
fd.bcname = 'line' + str(tags[1])
|
||||
mesh.SetBCName(index - 1, fd.bcname)
|
||||
@ -139,7 +142,7 @@ def ReadGmsh(filename):
|
||||
else:
|
||||
index = len(materialmap) + 1
|
||||
if len(namemap):
|
||||
mesh.SetMaterial(index, namemap[tags[0]])
|
||||
mesh.SetMaterial(index, namemap[1][tags[0]])
|
||||
else:
|
||||
mesh.SetMaterial(index, "line" + str(tags[1]))
|
||||
materialmap[tags[1]] = index
|
||||
@ -154,7 +157,7 @@ def ReadGmsh(filename):
|
||||
index = len(facedescriptormap) + 1
|
||||
fd = FaceDescriptor(bc=index)
|
||||
if len(namemap):
|
||||
fd.bcname = namemap[tags[0]]
|
||||
fd.bcname = namemap[2][tags[0]]
|
||||
else:
|
||||
fd.bcname = "surf" + str(tags[1])
|
||||
mesh.SetBCName(index - 1, fd.bcname)
|
||||
@ -166,7 +169,7 @@ def ReadGmsh(filename):
|
||||
else:
|
||||
index = len(materialmap) + 1
|
||||
if len(namemap):
|
||||
mesh.SetMaterial(index, namemap[tags[0]])
|
||||
mesh.SetMaterial(index, namemap[2][tags[0]])
|
||||
else:
|
||||
mesh.SetMaterial(index, "surf" + str(tags[1]))
|
||||
materialmap[tags[1]] = index
|
||||
@ -187,7 +190,7 @@ def ReadGmsh(filename):
|
||||
else:
|
||||
index = len(materialmap) + 1
|
||||
if len(namemap):
|
||||
mesh.SetMaterial(index, namemap[tags[0]])
|
||||
mesh.SetMaterial(index, namemap[3][tags[0]])
|
||||
else:
|
||||
mesh.SetMaterial(index, "vol" + str(tags[1]))
|
||||
materialmap[tags[1]] = index
|
||||
|
@ -189,7 +189,7 @@ def GetData(mesh, args, kwargs):
|
||||
for i, el in enumerate(mesh.Elements2D()):
|
||||
pnts[i, :, 3] = el.index - 1
|
||||
fds = mesh.FaceDescriptors()
|
||||
d["colors"] = [fd.color for fd in fds]
|
||||
d["colors"] = [fd.color +(fd.transparency,) for fd in fds]
|
||||
d["mesh_regions_2d"] = len(fds)
|
||||
d["names"] = [fd.bcname for fd in fds]
|
||||
|
||||
@ -222,6 +222,17 @@ class WebGLScene(base):
|
||||
self.kwargs = kwargs
|
||||
self.encoding = "b64"
|
||||
|
||||
def Redraw(self, *args, **kwargs):
|
||||
if args or kwargs:
|
||||
if 'show' not in kwargs:
|
||||
kwargs['show'] = False
|
||||
|
||||
new_scene = Draw(*args, **kwargs)
|
||||
self.obj = new_scene.obj
|
||||
self.args = new_scene.args
|
||||
self.kwargs = new_scene.kwargs
|
||||
super().Redraw()
|
||||
|
||||
def GetData(self, set_minmax=True):
|
||||
self.kwargs["encoding"] = self.encoding
|
||||
typ = type(self.obj)
|
||||
@ -361,12 +372,12 @@ def _get_draw_default_args():
|
||||
)
|
||||
|
||||
|
||||
def Draw(obj, *args, **kwargs):
|
||||
def Draw(obj, *args, show=True, **kwargs):
|
||||
kwargs_with_defaults = _get_draw_default_args()
|
||||
kwargs_with_defaults.update(kwargs)
|
||||
|
||||
scene = WebGLScene(obj, args, kwargs_with_defaults)
|
||||
if wg is not None and wg._IN_IPYTHON:
|
||||
if show and wg is not None and wg._IN_IPYTHON:
|
||||
if wg._IN_GOOGLE_COLAB:
|
||||
from IPython.display import display, HTML
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user