mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-19 09:20: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);
|
moved_surfaces.SetBit(i);
|
||||||
mesh.SetBCName(new_si-1, "mapped_" + name);
|
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]);
|
if(surfacefacs[sel.GetIndex()] > 0) Swap(points[0], points[2]);
|
||||||
for(auto i : Range(points))
|
for(auto i : Range(points))
|
||||||
el[sel.PNums().Size() + i] = points[i];
|
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()]);
|
el.SetIndex(new_mat_nrs[sel.GetIndex()]);
|
||||||
if(add_volume_element)
|
if(add_volume_element)
|
||||||
mesh.AddVolumeElement(el);
|
mesh.AddVolumeElement(el);
|
||||||
|
@ -633,8 +633,12 @@ public:
|
|||||||
{
|
{
|
||||||
TopoDS_Wire wire = wires.back();
|
TopoDS_Wire wire = wires.back();
|
||||||
wires.pop_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);
|
builder.Perform(d);
|
||||||
auto shape = builder.Shape();
|
auto shape = builder.Shape();
|
||||||
wires.push_back (TopoDS::Wire(shape.Reversed()));
|
wires.push_back (TopoDS::Wire(shape.Reversed()));
|
||||||
|
@ -2308,6 +2308,8 @@ namespace netgen
|
|||||||
for (sei = 0; sei < nse; sei++)
|
for (sei = 0; sei < nse; sei++)
|
||||||
{
|
{
|
||||||
const Element2d & el = (*mesh)[sei];
|
const Element2d & el = (*mesh)[sei];
|
||||||
|
if(!SurfaceElementActive(vsol, *mesh, el))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (el.GetType() == TRIG || el.GetType() == TRIG6)
|
if (el.GetType() == TRIG || el.GetType() == TRIG6)
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,10 @@ def ReadGmsh(filename):
|
|||||||
|
|
||||||
pointmap = {}
|
pointmap = {}
|
||||||
facedescriptormap = {}
|
facedescriptormap = {}
|
||||||
namemap = { 0 : "default" }
|
namemap = { 0 : { 0 : "default" },
|
||||||
|
1: { 0 : "default" },
|
||||||
|
2: { 0 : "default" },
|
||||||
|
3: { 0 : "default" } }
|
||||||
materialmap = {}
|
materialmap = {}
|
||||||
bbcmap = {}
|
bbcmap = {}
|
||||||
|
|
||||||
@ -80,7 +83,7 @@ def ReadGmsh(filename):
|
|||||||
for i in range(numnames):
|
for i in range(numnames):
|
||||||
f.readline
|
f.readline
|
||||||
line = 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":
|
if line.split()[0] == "$Nodes":
|
||||||
num = int(f.readline().split()[0])
|
num = int(f.readline().split()[0])
|
||||||
@ -115,7 +118,7 @@ def ReadGmsh(filename):
|
|||||||
else:
|
else:
|
||||||
index = len(bbcmap) + 1
|
index = len(bbcmap) + 1
|
||||||
if len(namemap):
|
if len(namemap):
|
||||||
mesh.SetCD2Name(index, namemap[tags[0]])
|
mesh.SetCD2Name(index, namemap[1][tags[0]])
|
||||||
else:
|
else:
|
||||||
mesh.SetCD2Name(index, "line" + str(tags[1]))
|
mesh.SetCD2Name(index, "line" + str(tags[1]))
|
||||||
bbcmap[tags[1]] = index
|
bbcmap[tags[1]] = index
|
||||||
@ -127,7 +130,7 @@ def ReadGmsh(filename):
|
|||||||
index = len(facedescriptormap) + 1
|
index = len(facedescriptormap) + 1
|
||||||
fd = FaceDescriptor(bc=index)
|
fd = FaceDescriptor(bc=index)
|
||||||
if len(namemap):
|
if len(namemap):
|
||||||
fd.bcname = namemap[tags[0]]
|
fd.bcname = namemap[1][tags[0]]
|
||||||
else:
|
else:
|
||||||
fd.bcname = 'line' + str(tags[1])
|
fd.bcname = 'line' + str(tags[1])
|
||||||
mesh.SetBCName(index - 1, fd.bcname)
|
mesh.SetBCName(index - 1, fd.bcname)
|
||||||
@ -139,7 +142,7 @@ def ReadGmsh(filename):
|
|||||||
else:
|
else:
|
||||||
index = len(materialmap) + 1
|
index = len(materialmap) + 1
|
||||||
if len(namemap):
|
if len(namemap):
|
||||||
mesh.SetMaterial(index, namemap[tags[0]])
|
mesh.SetMaterial(index, namemap[1][tags[0]])
|
||||||
else:
|
else:
|
||||||
mesh.SetMaterial(index, "line" + str(tags[1]))
|
mesh.SetMaterial(index, "line" + str(tags[1]))
|
||||||
materialmap[tags[1]] = index
|
materialmap[tags[1]] = index
|
||||||
@ -154,7 +157,7 @@ def ReadGmsh(filename):
|
|||||||
index = len(facedescriptormap) + 1
|
index = len(facedescriptormap) + 1
|
||||||
fd = FaceDescriptor(bc=index)
|
fd = FaceDescriptor(bc=index)
|
||||||
if len(namemap):
|
if len(namemap):
|
||||||
fd.bcname = namemap[tags[0]]
|
fd.bcname = namemap[2][tags[0]]
|
||||||
else:
|
else:
|
||||||
fd.bcname = "surf" + str(tags[1])
|
fd.bcname = "surf" + str(tags[1])
|
||||||
mesh.SetBCName(index - 1, fd.bcname)
|
mesh.SetBCName(index - 1, fd.bcname)
|
||||||
@ -166,7 +169,7 @@ def ReadGmsh(filename):
|
|||||||
else:
|
else:
|
||||||
index = len(materialmap) + 1
|
index = len(materialmap) + 1
|
||||||
if len(namemap):
|
if len(namemap):
|
||||||
mesh.SetMaterial(index, namemap[tags[0]])
|
mesh.SetMaterial(index, namemap[2][tags[0]])
|
||||||
else:
|
else:
|
||||||
mesh.SetMaterial(index, "surf" + str(tags[1]))
|
mesh.SetMaterial(index, "surf" + str(tags[1]))
|
||||||
materialmap[tags[1]] = index
|
materialmap[tags[1]] = index
|
||||||
@ -187,7 +190,7 @@ def ReadGmsh(filename):
|
|||||||
else:
|
else:
|
||||||
index = len(materialmap) + 1
|
index = len(materialmap) + 1
|
||||||
if len(namemap):
|
if len(namemap):
|
||||||
mesh.SetMaterial(index, namemap[tags[0]])
|
mesh.SetMaterial(index, namemap[3][tags[0]])
|
||||||
else:
|
else:
|
||||||
mesh.SetMaterial(index, "vol" + str(tags[1]))
|
mesh.SetMaterial(index, "vol" + str(tags[1]))
|
||||||
materialmap[tags[1]] = index
|
materialmap[tags[1]] = index
|
||||||
|
@ -189,7 +189,7 @@ def GetData(mesh, args, kwargs):
|
|||||||
for i, el in enumerate(mesh.Elements2D()):
|
for i, el in enumerate(mesh.Elements2D()):
|
||||||
pnts[i, :, 3] = el.index - 1
|
pnts[i, :, 3] = el.index - 1
|
||||||
fds = mesh.FaceDescriptors()
|
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["mesh_regions_2d"] = len(fds)
|
||||||
d["names"] = [fd.bcname for fd in fds]
|
d["names"] = [fd.bcname for fd in fds]
|
||||||
|
|
||||||
@ -222,6 +222,17 @@ class WebGLScene(base):
|
|||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
self.encoding = "b64"
|
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):
|
def GetData(self, set_minmax=True):
|
||||||
self.kwargs["encoding"] = self.encoding
|
self.kwargs["encoding"] = self.encoding
|
||||||
typ = type(self.obj)
|
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 = _get_draw_default_args()
|
||||||
kwargs_with_defaults.update(kwargs)
|
kwargs_with_defaults.update(kwargs)
|
||||||
|
|
||||||
scene = WebGLScene(obj, args, kwargs_with_defaults)
|
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:
|
if wg._IN_GOOGLE_COLAB:
|
||||||
from IPython.display import display, HTML
|
from IPython.display import display, HTML
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user