mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-27 22:30:33 +05:00
77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
|
import pytest
|
||
|
|
||
|
from netgen.meshing import IdentificationType
|
||
|
idtype = IdentificationType.CLOSESURFACES
|
||
|
|
||
|
def test_two_boxes():
|
||
|
occ = pytest.importorskip("netgen.occ")
|
||
|
inner = occ.Box((0,0,0), (1,1,1))
|
||
|
trafo = occ.gp_Trsf().Scale(inner.center, 1.1)
|
||
|
outer = trafo(inner)
|
||
|
|
||
|
inner.Identify(outer, "", idtype, trafo)
|
||
|
shape = occ.Glue([outer-inner, inner])
|
||
|
|
||
|
geo = occ.OCCGeometry(shape)
|
||
|
mesh = geo.GenerateMesh(maxh=0.3)
|
||
|
have_prisms = False
|
||
|
|
||
|
for el in mesh.Elements3D():
|
||
|
if len(el.vertices)==6:
|
||
|
have_prisms = True
|
||
|
break
|
||
|
|
||
|
assert have_prisms
|
||
|
|
||
|
def test_two_circles():
|
||
|
occ = pytest.importorskip("netgen.occ")
|
||
|
circ1 = occ.WorkPlane().Circle(1).Face()
|
||
|
trafo = occ.gp_Trsf().Scale(circ1.center, 1.1)
|
||
|
|
||
|
circ2 = trafo(circ1)
|
||
|
circ1.edges[0].Identify(circ2.edges[0], "", idtype, trafo)
|
||
|
circ2 -= circ1
|
||
|
shape = occ.Glue([circ1, circ2])
|
||
|
|
||
|
geo = occ.OCCGeometry(shape, 2)
|
||
|
mesh = geo.GenerateMesh(maxh=0.2)
|
||
|
have_quads = False
|
||
|
|
||
|
for el in mesh.Elements2D():
|
||
|
if len(el.vertices)==4:
|
||
|
have_quads = True
|
||
|
break
|
||
|
|
||
|
assert have_quads
|
||
|
|
||
|
def test_cut_identified_face():
|
||
|
occ = pytest.importorskip("netgen.occ")
|
||
|
from netgen.occ import Z, Box, Cylinder, Glue, OCCGeometry
|
||
|
box = Box((-1,-1,0), (1,1,1))
|
||
|
cyl = Cylinder( (0,0,0), Z, 0.5, 1 )
|
||
|
|
||
|
box.faces.Min(Z).Identify(box.faces.Max(Z), "", idtype)
|
||
|
shape = Glue([cyl, box])
|
||
|
geo = OCCGeometry(shape)
|
||
|
mesh = geo.GenerateMesh(maxh=0.5)
|
||
|
|
||
|
for el in mesh.Elements3D():
|
||
|
assert len(el.vertices)==6
|
||
|
|
||
|
def test_identify_multiple_faces():
|
||
|
occ = pytest.importorskip("netgen.occ")
|
||
|
from netgen.occ import Z, Box, Cylinder, Glue, OCCGeometry, gp_Trsf
|
||
|
box = Box((-1,-1,0), (1,1,1))
|
||
|
cyl = Cylinder( (0,0,0), Z, 0.5, 1 )
|
||
|
|
||
|
shape = Glue([box, cyl])
|
||
|
bot_faces = shape.faces[Z < 0.1]
|
||
|
top_faces = shape.faces[Z > 0.1]
|
||
|
bot_faces.Identify(top_faces, "", idtype, gp_Trsf.Translation((0,0,1)))
|
||
|
|
||
|
geo = OCCGeometry(shape)
|
||
|
mesh = geo.GenerateMesh(maxh=0.3)
|
||
|
|
||
|
for el in mesh.Elements3D():
|
||
|
assert len(el.vertices)==6
|