Fail to add surfaces to one physical group
Dear developers,
Recently I found if I create two plates and would like to add them to one physical group, only one surface can be added.
Could you help me with this? The code is attached.
Thanks
gmsh.initialize()
# Set up geometry
lc = 10 # characteristic length
l = 10e-3
d = 5e-4
p1 = gmsh.model.geo.addPoint(-l/2, -l/2, 0, lc)
p2 = gmsh.model.geo.addPoint(l/2, -l/2, 0, lc)
p3 = gmsh.model.geo.addPoint(l/2, l/2, 0, lc)
p4 = gmsh.model.geo.addPoint(-l/2, l/2, 0, lc)
c1 = gmsh.model.geo.addLine(p1, p2)
c2 = gmsh.model.geo.addLine(p2, p3)
c3 = gmsh.model.geo.addLine(p3, p4)
c4 = gmsh.model.geo.addLine(p4, p1)
ll1 = gmsh.model.geo.addCurveLoop([c1, c2, c3, c4])
s1 = gmsh.model.geo.addPlaneSurface([ll1])
p5 = gmsh.model.geo.addPoint(-l/2, -l/2, d, lc)
p6 = gmsh.model.geo.addPoint(l/2, -l/2, d, lc)
p7 = gmsh.model.geo.addPoint(l/2, l/2, d, lc)
p8 = gmsh.model.geo.addPoint(-l/2, l/2, d, lc)
c5 = gmsh.model.geo.addLine(p5, p6)
c6 = gmsh.model.geo.addLine(p6, p7)
c7 = gmsh.model.geo.addLine(p7, p8)
c8 = gmsh.model.geo.addLine(p8, p5)
ll2 = gmsh.model.geo.addCurveLoop([c5, c6, c7, c8])
s2 = gmsh.model.geo.addPlaneSurface([ll2])
gmsh.model.geo.synchronize()
object1 = gmsh.model.addPhysicalGroup(2, [s1, s2], name="plates")
# Generate mesh
gmsh.model.mesh.setSize(gmsh.model.getEntities(),lc)
gmsh.model.mesh.generate(2)
elem_types, elem_tags, elem_node_tags = gmsh.model.mesh.getElements(2, -1)
print(elem_tags)
physical_ids = gmsh.model.getPhysicalGroups(2)
print(physical_ids)
dim = physical_ids[0][0]
tag = physical_ids[0][1]
elem_types, elem_tags, elem_node_tags = gmsh.model.mesh.getElements(dim, tag)
print(elem_tags)
gmsh.option.setNumber("Mesh.MshFileVersion", 2.2)
gmsh.write("test.vtk")
gmsh.finalize()
Edited by qinghao zhang