LoginSignup
4

More than 5 years have passed since last update.

OpenFOAM用メッシュをGmshで作成し変換する方法(gmshToFoam)

Last updated at Posted at 2016-07-09

リンク

Gmshのインストール

Ubuntuの場合は

$ sudo apt-get install gmsh

とすればgmsh-2.8.3をインストールできます。最新版(2016年7月現在はgmsh-2.12.0)を得るにはGmshのホームページから直接ダウンロードしてください。

$ wget "http://gmsh.info/bin/Linux/gmsh-2.12.0-Linux64.tgz"   # Gmsh-2.12.0をダウンロード
$ tar zxvf gmsh-2.12.0-Linux64.tgz                            # 解凍
$ cd gmsh-2.12.0-Linux                                        # ディレクトリを移動
$ sudo su                                                     # 管理者へ移行
$ cp bin/gmsh /usr/bin/                                       # 以下、各ファイルをコピー
$ cp -r share/doc/gmsh /usr/share/doc/
$ cp share/man/man1/gmsh.1 /usr/share/man/man1/
$ gmsh -version                                               # バージョンを確認 >> 2.12.0が返ってくる

2.8.3から2.12.0までの変更点はGmsh Version Historyを確認してください。(2.9.2からSurfaceに組み込まれたPoint/LineをExtrudeすることが可能となっていますので、その機能が必要な場合は最新バージョンをインストールしてください。)

説明

Gmshの使い方については上のリンクを参照してください。gmshToFoamはGmshで作成したメッシュをOpenFOAMのメッシュ形式に変換するユーティリティーアプリケーションです。ケースのルートディレクトリにおいて

$ gmshToFoam <gmshFileName>

と入力すればGmshのメッシュがOpenFOAM形式に変換されconstant/polyMesh/に保存されます。例えばディレクトリ構造が以下のようになっているケースの場合

gmshToFoam実行前のディレクトリ構成
case/
  |---0/
  |   |---p
  |   |---U
  |
  |---constant/
  |   |---polyMesh/
  |
  |---system/
  |   |---controlDict
  |   |---fvSolution
  |   |---fvScheme
  |
  |---preProcess/
      |---gmsh.geo

Gmshを使ってメッシュを作成し、gmshToFoamでOpenFOAM形式に変換するには次のようにコマンドを入力します。

Gmshでメッシュを作成しOpenFOAM形式に変換
$ cd preProcess/
$ gmsh -3 gmsh.geo                  # 3Dメッシュファイルgmsh.mshが作成される
$ cd ..
$ gmshToFoam preProcess/gmsh.msh    # メッシュ変換
gmshToFoam実行後のディレクトリ構成
case/
  |---0/
  |   |---p
  |   |---U
  |
  |---constant/
  |   |---polyMesh/
  |       |---sets/
  |       |---boundary
  |       |---points
  |       |---faces
  |       |---owner
  |       |---neighbour
  |       |---pointZones
  |       |---faceZones
  |       |---cellZones
  |
  |---system/
  |   |---controlDict
  |   |---fvSolution
  |   |---fvScheme
  |
  |---preProcess/
      |---gmsh.geo
      |---gmsh.msh

Gmsh内で定義されたPhysical SurfaceおよびPhysical Volumeは、定義された名前のままそれぞれ

  • Physical Surface --> boundary(outer surfaceの場合)またはfaceZones(internal surfaceの場合)
  • Physical Volume --> cellZones

と変換されます。ただしgmshToFoamには、Gmshで定義されたinternal surfaceの名前を認識できずfaceZone_#という名前でfaceZone内に保存するというバグがあります。これはgmshToFoam2を使うと避けることができるようですが、gmshToFoam2はfoam-extend-3.2には標準で含まれておらず、またファイル・クラス・関数の定義名がgmshToFoam作成時から変化しておりMakeファイルおよびソースコードの修正が必要です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4