用于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中char的用途   swing修复,以便显示可以同时显示十进制数和整数   java给定一个场景,找到拥有的JFXPanel   java JPA 2标准获取路径导航   java如何用JUnit测试这个类?   JSF中的java请求作用域   Spring云Zuul代理背后的java Spring OAuth授权服务器   java限制聚合返回的存储桶大小   java如何在安卓应用程序中请求超级su权限   防止超级关键字的java Checkstyle规则   java 安卓。应用程序。应用程序无法强制转换到安卓。应用程序。在回收器适配器中使用FragmentManager时的活动   使用Java的Twitter广告API   切换到4.0.1版本后,java“JavaMailSenderImpl无法解析为类型”   java没有getter方法可用于名称下bean的属性   java 0/1背包堆空间   java我无法使用断点进行调试   Jar文件名表单java代码   java调用从扩展活动的MainActivity类扩展片段的类片段