使用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 Jgit对于给定的存储库,我们如何确定新提交的列表,以及每个提交来自哪个分支?   从MS Access数据库添加java ComboBoxItem   如何禁止Java列表中不同类的实例?   java在没有Web的JAXR上使用Shiro过滤器。xml   由于java原因,无法在Ubuntu上安装Netbeans 8.2。awt。未找到恐怖和辅助技术   java JUnit对RuntimeException的处理(特别是)   java空集合在Apache CXF服务(JAXWS)中被转换为null   java CannotAcquireLockException问题   sql如何在数据库中对(Java)枚举建模(使用SQL92)   安卓在Java中获取友好url后面的文件名   java如何访问数组名以获取列表?   javascript Java Nashorn longBitsToDouble   java控制台<init>错误   java将一个LinkedList追加/连接到另一个LinkedList的最有效方式是什么?   Java for正在跳过的循环   java帮助创建带有动画的复杂Swing GUI   java Android编辑文本。setHint在片段中不工作