用于gmsh的python前端

pygmsh的Python项目详细描述


pygmsh

用于python的gmsh。

CircleCIcodecovCode style: blackDocumentation StatusPyPi VersionDOIGitHub starsPyPi downloads

Gmsh是一个强大的网格生成工具,使用脚本语言 这是出了名的难写。

pygmsh的目标是将gmsh的强大功能与python的多功能性结合起来,并 从gmsh脚本语言中提供有用的抽象,以便您可以创建复杂的 几何图形更容易。

详情见here 文档。

内置

要创建上述网格,只需执行

import pygmsh
import numpy as np

geom = pygmsh.built_in.Geometry()

# Draw a cross.
poly = geom.add_polygon([
    [ 0.0,  0.5, 0.0],
    [-0.1,  0.1, 0.0],
    [-0.5,  0.0, 0.0],
    [-0.1, -0.1, 0.0],
    [ 0.0, -0.5, 0.0],
    [ 0.1, -0.1, 0.0],
    [ 0.5,  0.0, 0.0],
    [ 0.1,  0.1, 0.0]
    ],
    lcar=0.05
)

axis = [0, 0, 1]

geom.extrude(
    poly,
    translation_axis=axis,
    rotation_axis=axis,
    point_on_axis=[0, 0, 0],
    angle=2.0 / 6.0 * np.pi
)

mesh = pygmsh.generate_mesh(geom)
# mesh.points, mesh.cells, ...

检索指定几何体的网格的所有点和单元。储存 mesh,您可以使用meshio;例如

importmeshiomeshio.write("test.vtk",mesh)

输出文件可以用各种工具可视化,例如, ParaView

你可以在目录中找到上面的网格 ^{}和其他小的 例子。

打开级联

从3.0版开始,gmsh支持opencascade,允许使用cad样式的几何图形 规范。

示例:

import pygmsh

geom = pygmsh.opencascade.Geometry(
  characteristic_length_min=0.1,
  characteristic_length_max=0.1,
  )

rectangle = geom.add_rectangle([-1.0, -1.0, 0.0], 2.0, 2.0)
disk1 = geom.add_disk([-1.2, 0.0, 0.0], 0.5)
disk2 = geom.add_disk([+1.2, 0.0, 0.0], 0.5)
union = geom.boolean_union([rectangle, disk1, disk2])

disk3 = geom.add_disk([0.0, -0.9, 0.0], 0.5)
disk4 = geom.add_disk([0.0, +0.9, 0.0], 0.5)
flat = geom.boolean_difference([union], [disk3, disk4])

geom.extrude(flat, [0, 0, 0.3])

mesh = pygmsh.generate_mesh(geom)

安装

侏儒是available from the Python Package Index, 所以只需键入

pip3 install pygmsh --user

安装。还要确保安装了gmsh

使用量

只是

import pygmsh as pg

利用模块提供的所有优点。这个 documentation和下面的示例 ^{}可能会激励你。

测试

要运行pygmsh单元测试,请签出此存储库并键入

pytest

建筑文档

文档是使用Sphinx生成的。

构建运行

sphinx-build -b html doc doc/_build

许可证

pygmsh是在MIT license下发布的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在创建hashmap时正确使用泛型   java java编译器和模块   从每个ArrayList对象具有多个值的ArrayList写入文本文件(java)   java日程表每日报警管理器   显示客户端屏幕的java   尝试使用jpcap读取数据包时出现网络编程异常(java.lang.InstanceionException)   java如何为API测试创建JSESSIONID   ReportServer中的电子邮件SMTP配置和java错误。没有为PKCS#12密钥库提供密码   java如何最小化UDP数据包丢失   使用自定义hibernate类型时出现java ehcache错误?   java异步servlet,我们为什么需要它   java元数据项错误   security Java安全地存储代码中使用所需的用户帐户详细信息   替换文件中包含的文件名,并使用java将文件重命名为新名称   java Lucene按国家排序   java casting Integer>Object和更高版本的Object>Integer   java如何从电子表格行项将准备好的语句循环到derby数据库   需要安卓 java中模型的值名称