Main FAQ

出典: OFWikiJa

よくある質問と回答です。英語版WikiのFAQを元に作成していますが、なるべく新しい状況を盛り込むようにしているため、回答の内容は必ずしも英語版と同一ではありません。

目次

[編集] インストールおよび実行

 アプリケーションのインストールおよび実行に関する問題です。

[編集] OpenFOAMではどのようなプラットフォームがサポートされていますか?

 ヴァージョン1.3/1.4/1.4.1では、公式なバイナリは以下の2つのプラットフォームで用意されています。

  • Linux (x86)
  • LinuxAMD64 (x86-64)

 その他、OpenFOAM掲示板でポーテイングが議論されたOSは以下のとおりです。

  • SGI Irix 6.5: 状況不明
  • True 64: 状況不明
  • Mac OS X: コンパイル可能、ベータ版バイナリ有 (スレッドをご覧下さい)
  • SGI Itanium (Linux): スレッドによれば、特に問題は無いとのこと
  • IBM AIX: 状況不明
  • Cygwin/Windows: 以下の質問をご覧下さい。

[編集] なぜOpenFOAMのWindows版は存在しないのですか?

 OpenFOAMをWindowsにポーティングする、実現可能性のある唯一の方法は、一般的なUNIXのAPIをWindowsにおいて実装するアプリケーションであるCygwinを使うことです。

 Windowsへのポーティングにあたっての問題は、最近のWindowsに使われているNTFSファイルシステムが大文字と小文字を区別しない(hello.cHello.Cが同一のファイルとして扱われる)ことにあります。OpenFOAMのソースアーカイブは大文字と小文字を区別するファイルシステムを前提としており、Windows上では正しく展開することすらできません(OpenFOAM掲示板の関連スレッドをご覧下さい)。

 現状では、OpenFOAM Extensions Projectからリリースされている、バージョン1.4のCygwin版(OpenFOAM-1.4-3.cygwin.src.tar.bz2)ソースアーカイブが最新です。コンパイル方法は、配布物に同梱のREADME.Cygwinをご覧ください。paraFoam (PVFoamReader/vtkFoam)はポーティングされていませんので、こちらのカスタム版ParaViewが必要です。本ポーティングに関する議論は、OpenFOAM掲示板の専用スレッドをご覧ください。

[編集] サポートされていないプラットフォームへOpenFOAMをポーティングするには、どうすれば良いでしょうか?

 ポーティングしようとしているプラットフォームがUNIX系のOSでなければ、困難な作業となるでしょう。手始めに、新規プラットフォームへのポーティング法をご覧下さい。

[編集] FoamXで数値を入力できないのはなぜですか?/FoamXで一部のボタンが文字化けするのですが?

 FoamXはデフォルトの言語が英語のシステムで実行されることを前提としています。別の言語設定の下で実行したい場合は、~/OpenFOAM/OpenFOAM-1.3/bin/FoamXスクリプトを修正する必要があります。

  • Linux等のUNIX系OSでは、FoamXの冒頭に以下の行を追加してください。
export LANG=en_US

(参考: [1])

  • Cygwin/Windowsでは、以下の行
    -Duser.language=en \

FoamXの最後部に追加し、当該部が以下のようになるようにしてください。

"$jdkhome/bin/java" \
    -cp "$jars" \
    -DFoamX.SystemPath="$WM_PROJECT_DIR" \
    -DFoamX.SystemConfigPath="$FOAMX_CONFIG" \
    -DFoamX.UserConfigPath="$FOAMX_CONFIG" \
    -Duser.language=en \
    FoamX.App $orbArgs $args

(参考: [2])

[編集] 解の中にNaNが含まれたときにソルバを止めるには、どのようにすれば良いですか?

 通常、OpenFOAMは解にNaN (Not a number)が含まれて解が意味をなさない時にも計算を続けます。このような状況を避けるには、環境変数FOAM_SIGFPEをゼロでない値に設定してください。すなわち例えば、tcshでは

setenv FOAM_SIGFPE 1 

とし、bashでは

export FOAM_SIGFPE=1

とします。

[編集] プリプロセッシング

[編集] OpenFOAMのメッシュ形式に変換できるフリーのメッシュジェネレータ(メッシャ)には、どのようなものがありますか?

テトラメッシュを生成可能なフリーのメッシャとしては、GmshADVENTUREシステムに含まれるTriPatch/TetMeshなどがあります。それぞれ、以下のような特徴を有します。

  • Gmsh: 簡易的なモデラを内蔵する。専用の形状・メッシュ記述言語により、形状やメッシュをパラメトリックに生成可能。メッシュ生成の方法によっては、ヘキサメッシュの生成も可能。メッシュのOpenFOAM形式への変換にgmsh2ToFoamを使用することで、境界パッチの範囲・名前もメッシュ記述言語内から指定可能。IGES形式データのインポート可能ではあるが、ADVENTUREシステムほど対応度が良くない。
  • TriPatch/TetMesh: IGES形式CADデータの扱いが可能。Gmshも仕様上は可能だが、Gmshより対応度が良い。大規模メッシュの生成が比較的高速。境界パッチの範囲・名前は、OpenFOAM付属のmshToFoamによってOpenFOAM形式に変換後、同じくOpenFOAM付属のpatchTool等によって設定する必要がある。別途、モデラが必要。

TriPatch/TetMeshに与える形状データ形式としては、IGES形式以外にも、3D CGソフトBlenderのRaw Triangle形式からTriPatch/TetMesh表面パッチ形状データに変換するコンバータ(blend2adv.pl)、およびGmshで生成した表面メッシュデータから同じくTetMesh表面パッチ形状データに変換するコンバータ(画像:Gmsh2ToPcm-20070307.tar.gz)が存在します。

以上をまとめると、以下の図のようになります。

[編集] トラブルシューティング

[編集] FoamXがネームサーバ(nsd)とコンタクトできない

 ほぼ必ず、以下のような点に問題があります。

  1. ホスト名が設定されていない(FoamXで使用されている分散オブジェクトモデルのCORBAでは、'localhost'は使えません)
  2. ホスト名が/etc/hostsに設定されていないか、または二重に設定されている
  3. ドメイン名を省略したホスト名のみが/etc/hostsに設定されている
  4. セキュリティに関連して開いているポートの問題(ファイアウォール等)
  5. libelfが無い
  6. libXpが無い
  7. SELinux の問題
  8. Linuxディストリビューションによっては、nscd (name service cache daemon)の起動が必要(一般にはランレベルエディタ等で設定します)

(詳しくはOpenFOAM掲示板の次のスレッドをご覧下さい: ホスト名, libelf, libXp, SELinuxとnscd, FoamXに関する問題全般)