使用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 SimpleCursorAdapter删除值   java结束while循环条件   java检查设备是否连接到特定网络   java组织。冬眠MappingException找不到逻辑名称为annotation getter的列   为什么java邮件中会抛出此异常?   加载SDK时发生java Eclipse错误   返回奇怪输出的Java数组   JavaXStream和对象类序列化   将枚举列表传递给namedQuery后出现java非法转换异常。Hibernate中的setParameter()   java Android studio不允许我在字符串上使用开关?   有没有办法从Java程序访问存储在Chrome中的cookie   java在枚举中构造实例而不修改枚举类   java Blackberry JDE FieldChangeListener   java修复错误:未报告的异常InterruptedException   java Spring数据JPA:findAll(具有规范和可分页)在计数查询中失败