gpt4 book ai didi

python - 关于 Gmsh Python API 的问题

转载 作者:行者123 更新时间:2023-12-02 03:00:04 69 4
gpt4 key购买 nike

我正在尝试编写一个脚本,该脚本将使用 Gmsh Python API 自动网格化几何形状以进行 CFD 分析。我遇到了一些问题:

首先,我希望能够编写 Gmsh 脚本文件 (.geo) 以便进行调试。我查看了 Gmsh API 的源代码,发现 gmsh.write() 支持 .geo_unrolled 扩展。函数,但不仅仅是 .geo。此扩展主要实现了这一点,但在使用 gmsh.write('test.geo_unrolled') 时,似乎任何网格划分操作(例如将曲线标记为超限)或变换(例如扩张)都不会写入输出文件。 。我认为这与 _unrolled 部分有关。但是有什么方法可以从 API 中获取完整的 Gmsh 脚本吗?

其次,当我尝试复制样条曲线时,如下例所示:

p1 = gmsh.model.geo.addPoint(-1, 0.5, 0, 0.1)
p2 = gmsh.model.geo.addPoint(0, 1, 0, 0.1)
p3 = gmsh.model.geo.addPoint(1, 0.5, 0, 0.1)
s1 = gmsh.model.geo.addSpline([p1, p2, p3])
s2 = gmsh.model.geo.copy([s1])

我得到ValueError: ('gmshModelGeoCopy returned non-zero error code: ', 1) 。错误代码 1 ,似乎表明当s1时找不到原始样条线(copy())的标签。叫做。我在这里错过了什么吗?例如,我尝试过调用 gmsh.model.geo.synchronize()在尝试调用 copy() 之前,但这没有效果。

最后,当我使用 Gmsh GUI 中的“模块 - 几何 - 基本实体 - 变换 - 缩放”进行扩张变换时,选中“在副本上应用缩放”选项对话框中,在上面的示例样条线上,我确实得到了预期的曲线的缩放版本,包括三个点。假设我能够使用 API 完成相同的任务,那么我如何引用缩放样条线经过的三个新点,例如,如果我想在原始样条线的起点和缩放样条线?

最后,我想要完成的是:通过点列表绘制一条样条线,创建该样条线的缩放副本,在起点和终点之间绘制线条,并创建一个由两条样条线和直线。有没有比我尝试进行的扩张更好的方法?

最佳答案

可能为时已晚,但你永远不知道。

我从未需要使用 API 创建 .geo 文件。但我发现this discussion在 Gmsh 邮件列表存档中,这可能会有所帮助。

关于 copy 的错误,您必须指定要复制的实体的尺寸,而不仅仅是标签(检查 the documentation ,它指的是 dimTag)。这与旋转对称等转换是一样的。使用以下内容应该可以:

s2 = gmsh.model.geo.copy([(1, s1)])

注意:当仅复制一个实体时,我认为内部括号或方括号都是多余的,否则您必须提供 [(dim_1, tag_1), (dim_2, tag_2), 形式的元组列表。 ..,(dim_n,tag_n)]。

请记住,copy 将返回同类变量(元组列表),在您的情况下是变量s2将是[(1, tag_s2)]。因此,您可能不想使用相同类型的变量名称,因为为了获取标签,您必须使用 s2[0][1] 而不是简单的 s2.

这里您可以部分回答以下问题,因为复制实体的标签将包含在您的返回变量中。

希望对您或其他人有所帮助!

关于python - 关于 Gmsh Python API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951925/

69 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com