使用gmsh和给定的.geo文件生成和读取mesh文件

fc-oogmsh的Python项目详细描述


http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-oogmsh/pyfc-oogmsh_400.png

fc_oogmshpython包使从 .geo使用gmsh文件,必须安装该文件。也有可能 使用ooGmsh2ooGmsh4类读取mesh文件并以更友好的形式存储其包含内容。 这个包必须被视为gmsh文件和python之间非常简单的接口。 所以您可以自由地从ooGmsh2ooGmsh4对象创建任何想要的对象。 ooGmsh2用于读取以格式版本“2.2”存储的msh文件,ooGmsh4类用于格式版本“4.0”和“4.1”

Package test on
SystemPythongmsh
CentOS 7.62,7.16, 3.5.7, 3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6
Debian 9.92,7.16, 3.5.7, 3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6
Fedora 292,7.16, 3.5.7, 3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6
OpenSuse 15.03.5.7, 3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6
Ubuntu 18.042,7.16, 3.5.7, 3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6
Windows 10 (1809)3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6
MacOS Mojave (10.14.4)3.5.4, 3.6.8, 3.7.3 (python)4.3.0, 4.2.3, 4.1.5, 4.0.7, 3.0.6

文档可在fc-oogmsh专用网页上找到。

安装:

python包索引中提供了fc_oogmshpython包,因此要安装/升级,只需键入

pip install fc_oogmsh -U

配置:

必须将包配置为与gmsh一起使用。 对于默认配置,我们在python下运行:

importfc_oogmshfc_oogmsh.configure()

函数fc_oogmsh.configure()试图猜测gmsh二进制文件在哪里。 如果这个命令失败,或者我们想指定gmsh二进制位置,可以使用 gmsh选项指定具有完整路径的gmsh二进制文件。

  • 例如,在Linux下:

    importfc_oogmshfc_oogmsh.configure(gmsh='/usr/local/GMSH/gmsh-4.2.0-Linux/bin/gmsh')
  • 例如,在Windows下:

    importfc_oogmshfc_oogmsh.configure(gmsh=r'C:\Users\toto\GMSH\gmsh-4.2.0-Windows\gmsh.exe')
  • 例如,在macos下:

    importfc_oogmshfc_oogmsh.configure(gmsh='/Users/toto/GMSH/4.2.0/Gmsh.app/Contents/MacOS/gmsh')

现在,可以运行其中一个演示功能

importfc_oogmshfc_oogmsh.demo02()

linux下demo02()函数的输出是:

***********************
Running demo02 function
***********************
*** Build mesh file
[fc_oogmsh] Using input file: /home/cuvelier/Travail/Recherch/python/fc-oogmsh/src/fc_oogmsh/geodir/2d/condenser11.geo
[fc_oogmsh] Overwritting mesh file /home/cuvelier/.local/share/fc_oogmsh/meshes/condenser11-25.msh
[fc_oogmsh] Use option verbose=3 to see gmsh output
*** Read mesh file
*** Print oGh ->
ooGmsh4 object
    dim : 2
      d : 2
  types : [1 2]
    nq : 3483
      q : ndarray object[float64], size (2, 3483)
toGlobal: ndarray object[int32], size (3483,)
Entities:<class 'fc_oogmsh.msh.Entities'>
Nodes   :<class 'fc_oogmsh.msh.Nodes'>
Elements:<class 'fc_oogmsh.msh.Elements'>

示例用法:

  • 我们使用包中给定的几何文件condenser11.geo生成二维网格文件

    meshfile=fc_oogmsh.buildmesh2d('condenser11',25,force=True)

    此命令的输出为:

    fc_oogmsh] Using input file: /home/cuvelier/Travail/Recherch/python/fc-oogmsh/src/fc_oogmsh/geodir/2d/condenser11.geo
    [fc_oogmsh] Overwritting mesh file /home/cuvelier/.local/share/fc_oogmsh/meshes/condenser11-25.msh
    [fc_oogmsh] Use option verbose=3 to see gmsh output
    

    此后,可以使用ooGmsh4对象构造函数读取mesh文件并打印一些 信息

    oGh=fc_oogmsh.ooGmsh4(meshfile)print('*** Print oGh ->')print(oGh)

    这些命令的输出为:

    *** Print oGh ->
    ooGmsh4 object
        dim : 2
          d : 2
      types : [1 2]
        nq : 3483
          q : ndarray object[float64], size (2, 3483)
    toGlobal: ndarray object[int32], size (3483,)
    Entities:<class 'fc_oogmsh.msh.Entities'>
    Nodes   :<class 'fc_oogmsh.msh.Nodes'>
    Elements:<class 'fc_oogmsh.msh.Elements'>
    

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

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen