はじめに
日本ではOpenFOAMのGoogle Groupで質問を投げかけることで、直面している問題に対してアドバイスをもらえることがある。
OpenFOAM Google Group
https://groups.google.com/forum/?nomobile=true#!forum/openfoam
ただ、回答されない質問もちらほら増えてきている。それは質問の内容が初歩的すぎるとかではなく、単に情報が足りなくて回答のしようがない時が多い。
今回はOpenFOAMに関して質問するときに何を書いたらいいのか考えて見た。
何をしようとしているのかを書く
どんな計算なのかを簡単に説明する。趣味でやっているのでなければ、自分の計算について説明できないことも多いと思う。その場合は別の問題に置き換えて書いてみる。
あと、あまり専門的なことは書かない。それは質問のスレッドが伸びてきてからでいいと思う。
どんなモデルのなのかを示す
最近よく抜けているのがこれだと思う。境界条件だけ書かれても位置関係が分からなければ、その情報はあまり意味がない。
例えば、外部流れで計算が収束しないという質問で、その原因がOutletと対象物の距離があまりに近いからだとかの場合、境界条件だけではその問題の解決策にはすぐには至れない。
自分のモデルを示すことができなければ、手書きでもいいので簡単な矩形や丸とかで絵をかいてどの位置にどんな境界条件を入れているのかを見せる。これが回答を得るのに重要だったりする。
無視されているスレッドは、たいていエラーメッセージや言葉だけの境界条件しか書いていない。回答者はサポートではないので、いちいちキャッチボールを楽しむつもりはない。スっと回答したい。
使っているソルバは書く
これも忘れてはいけない。OpenFOAMは多様なソルバを抱えているため、ソルバによって固有の問題だったり、そもそも解こうとしているモデルに対して適切でないソルバを選んでいるがために問題が発生することもある。
どんな流体なのかを書く
ニュートン流体とか非ニュートン流体、単相流・混相流などを書く。
乱流モデルとかも書く。
それでもってエラーを書く
エラーのメッセージは最後に書くくらいでちょうどいい。というのも計算しようとしているモデルが分かっていないと、エラーの原因が絞り込めないことがある。
後、エラーメッセージはなるべくそのまま転記する。あなたの考え二の次。回答者はメッセージそのものと出たタイミングが知りたいのである。
たとえば、以下のメッセージはメッシュを切る前に計算を実行した際に出るメッセージであるが、この場合は自分が打ったコマンドを順番に示すことで、メッシュを切れていないことがわかる。
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1706 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Build : v1706
Arch : "LSB;label=32;scalar=64"
Exec : simpleFoam
Date : Dec 24 2017
Time : 23:56:21
Host : "LAPTOP-OUB5D812"
PID : 804
Case : /mnt/c/Users/hamme/Documents/vmshare/pitzDaily
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create mesh for time = 0
--> FOAM FATAL ERROR:
Cannot find file "points" in directory "polyMesh" in times 0 down to constant
From function Foam::word Foam::Time::findInstance(const Foam::fileName&, const Foam::word&, Foam::IOobject::readOption, const Foam::word&) const
in file db/Time/findInstance.C at line 202.
FOAM exiting
ファイルを出せるものは出す。
手っ取り早くという話であれば、これも重要な手段。単なるタイポの場合、ものを見ないとこちらからは指摘ができない。
あと、回答者が手元で再現できると回答が早くされるかもしれない。
おわりに
質問をするのは個人の自由だし、質問の仕方にルールがあるわけでもないです。
ただ、より早く回答を得たいのであれば、どんな情報が必要で、どうやってそれを伝えるかが必要になります。回答者はエスパーではなく、それぞれの分野でそれぞれの計算をしている人たちなので、普段扱っているモデルも自分とは異なります。
まずは自分のやっている計算がどんなのかを示して、分野の違いによるギャップをなくすのが、質問をする際には必要だと思います。
質問者も回答者もさっとやり取りできるようになったらいいなと思います。