Как автоматически переименовывать тома в Python API gmsh
Я пытаюсь создать подтома в коробке в gmsh. После создания подтома я хочу переименовать его на основе списка. В моем списке четыре столбца: первые три -
indices=[[1.,1.,1.,'lower'],[1.,1.,6.,'upper']]
На основании списка в пунктах 1.,1.,1. мой том должен быть назван «нижний» и в пунктах 1.,1.,6. как «верхний». Затем я должен найти ближайший к этим точкам тетраэдр, выяснить, что это за метка, и изменить все тераэдры с этой меткой объема на «нижний». Я делаю то же самое для другого тома. На данный момент делаю это вручную. Я признателен, если кто-нибудь поможет мне сделать это автоматически в gmsh. Это мой сценарий:
points=[[0.,0.,5.],[0.,5.,5.],[10.,5.,5.],[10.,0.,5.]]
import gmsh
gmsh.initialize()
gmsh.model.occ.addBox(0,0,0,10,5,10)
for [x, y, z] in points:
gmsh.model.occ.addPoint(x, y, z)
gmsh.model.occ.addLine (9, 10)
gmsh.model.occ.addLine (10, 11)
gmsh.model.occ.addLine (11, 12)
gmsh.model.occ.addLine (12, 9)
gmsh.model.occ.addCurveLoop([13,14,15,16], 10)
gmsh.model.occ.addSurfaceFilling(10, 10)
gmsh.model.occ.synchronize()
gmsh.model.occ.fragment(gmsh.model.occ.getEntities(2), gmsh.model.occ.getEntities(3))
gmsh.model.occ.synchronize()
gmsh.model.mesh.generate(3)
lower = gmsh.model.addPhysicalGroup(3, [1])
gmsh.model.setPhysicalName(3, lower, "lower")
upper = gmsh.model.addPhysicalGroup(3, [2])
gmsh.model.setPhysicalName(3, upper, "upper")
gmsh.option.setNumber("Mesh.MshFileVersion", 2.2)
gmsh.fltk.run()
gmsh.clear()