gmsh, как создавать элементы интуитивной прозорливости
Для моделирования методом конечных элементов мне нужны сетки более высокого порядка. Для эффективности я хочу использовать элементы интуитивной прозорливости, то есть элементы без внутренних узлов. В
Как я могу установить другой тип элемента или как-то удалить внутренние узлы? В следующем примере квадрата в 2D сгенерированные четырехугольники второго порядка имеют 9 узлов каждый, я бы хотел иметь только 8 узлов на элемент.
Интересно, что gmsh, похоже, знает эти типы элементов, поскольку они упоминаются в документации формата файла.
import numpy
import gmsh
gmsh.initialize()
gmsh.model.add("mini")
dim1=1
dim2=2
gmsh.model.geo.addPoint(0, 0, 0, 0.5, 1)
gmsh.model.geo.addPoint(1, 0, 0, 0.5, 2)
gmsh.model.geo.addPoint(1, 1, 0, 0.5, 3)
gmsh.model.geo.addPoint(0, 1, 0, 0.5, 4)
gmsh.model.geo.addLine(1, 2, 1)
gmsh.model.geo.addLine(2, 3, 2)
gmsh.model.geo.addLine(3, 4, 3)
gmsh.model.geo.addLine(4, 1, 4)
gmsh.model.geo.addCurveLoop([1, 2, 3, 4], 1)
gmsh.model.geo.addPlaneSurface([1], 1)
Square = gmsh.model.addPhysicalGroup(dim2, [1])
gmsh.model.setPhysicalName(dim2, Square, "Unit_Square")
gmsh.model.geo.mesh.setRecombine(dim2, 1)
gmsh.model.geo.synchronize()
gmsh.model.mesh.generate(dim2)
gmsh.model.mesh.setOrder(2) # generates Laplacian elements, but I want Serendipity
gmsh.write("mesh_order2.msh")
gmsh.finalize()
1 ответ
Christophe Geuzaine ответил на мой вопрос, ключевое слово - "неполные элементы" https://gitlab.onelab.info/gmsh/gmsh/-/issues/1272, что для моего примера означает
...
gmsh.model.mesh.generate(dim2)
gmsh.option.setNumber('Mesh.SecondOrderIncomplete', 1) # <-- that's it!
gmsh.model.mesh.setOrder(2)
...