新しい境界条件のコンパイルに関しまして

1,309 views
Skip to first unread message

石川

unread,
May 28, 2012, 8:08:33 AM5/28/12
to open...@googlegroups.com
皆様はじめまして、東京理科大学の石川と申します.4月よりOpenFOAMを導入しているのですが身近に知見のある者もおらず,現在の問題に関しまして一向の進展が見られないのでこの場を借りて質問をさせていただきました.長々と読みづらい文章になってしまっているかと思いますがどうぞよろしくお願い申し上げます.

現在Ubuntu 11.04 OpenFOAM ver 2.1.0で速度の境界条件にマランゴニ境界条件を定義しようとしています.使用ソルバーはicoFoamに熱を加えたmy_icoFoamというソルバーを使用しています
(こちらの記事を参考にさせていただきましたhttp://openfoamwiki.net/index.php/How_to_add_temperature_to_icoFoam)

添付させていただきました境界条件のファイルはhttp://www.cfd-online.com/Forums/openfoam-solving/58066-marangoni-bc.htmlにおきまして使用が確認されているものです.

また境界条件のコンパイルに関しましては以前のTera様の質問を参考にさせていただいております.(https://groups.google.com/forum/?fromgroups#!topic/openfoam/axHRwjp2z3s




下記が私が行った手順とエラーメッセージになります

1.下記の用にfvPatchFields内にmarangoniというディレクトリを作成し、その中に現在添付しております、marangoniFvPatchVectorField.CとmarangoniFvPatchVectorField.Hを入れます
tomoki@tomoki-VirtualBox:~/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/fields/fvPatchFields/marangoni$

2.次にtomoki@tomoki-VirtualBox:~/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/Make$ 内のfiles に下記のような文を加えwmakeを行いました
marangoniFvPatchFields = $(fvPatchFields)/marangoni
$(marangoniFvPatchFields)/marangoniFvPatchVectorField.C

3.wmakeを行いますとtomoki@tomoki-VirtualBox:~/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/Make/linuxGccDPOpt$ 内に

marangoniFvPatchVectorField.o

.tomoki@tomoki-VirtualBox:~/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/fields/fvPatchFields/marangoni$ 内に

marangoniFvPatchVectorField.dep 

というファイルが現れます.またこのwmakeは下記のような形で終了します.

Make/linuxGccDPOpt/porousZone.o: In function `Foam::porousZone::~porousZone()':
porousZone.C:(.text._ZN4Foam10porousZoneD2Ev[_ZN4Foam10porousZoneD5Ev]+0x58): undefined reference to `Foam::coordinateSystem::~coordinateSystem()'
collect2: ld はステータス 1 で終了しました
make: *** [OpenFOAM.out] エラー 1

4.次にtomoki@tomoki-VirtualBox:~/OpenFOAM/tomoki-2.1.0/run/bc_cavity/0$ 内でUの境界条件を

    movingWall
    {
      type marangoni;
      marangonicoeff 0.0005;

    }

とし、blockMeshDictの境界条件を

    movingWall
    {
        type marangoni;
        faces
        (
            (3 7 6 2)
        );
    }

としましたところ下記の用なエラーメッセージが現れました.

--> FOAM FATAL IO ERROR:
Unknown patchField type marangoni for patch type genericPatch

Valid patchField types are :

59
(
SRFFreestreamVelocity
SRFVelocity
activeBaffleVelocity
activePressureForceBaffleVelocity
:
:
:
wedge
zeroGradient
)


file: /home/tomoki/OpenFOAM/tomoki-2.1.0/run/bc_cavity/0/U::boundaryField::movingWall from line 28 to line 29.

    From function fvPatchField<Type>::New(const fvPatch&, const DimensionedField<Type, volMesh>&, const dictionary&)
    in file /opt/openfoam210/src/finiteVolume/lnInclude/fvPatchFieldNew.C at line 135.

FOAM exiting

となりおそらくコンパイルが上手くいっていないと考えております.

私の疑問点と行った解決策と致しましては
1.
tomoki@tomoki-VirtualBox:~/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/fields/fvPatchFields/marangoni$
tomoki@tomoki-VirtualBox:~/OpenFOAM/tomoki-2.1.0/run/my_cavity/0$

というように別のディレクトリ内でコンパイルを行ったことが原因かどうか

2.ブロックメッシュディクト内でtype marangoni という形でメッシュを作成したところ特にエラーもなかった点
(ブロックメッシュ内のmovingWallのtypeをmarangoni, U内のmovingWallのtypeをslipにしますと計算は実効されました)

3.また最後のエラーメッセージにおいて
/opt/openfoam210/src/finiteVolume/lnInclude/fvPatchFieldNew.C at line 135.

となっておりましたので/opt/openfoam210/src/finiteVolume/lnInclude 内を変更しようとしたところ"許可がありません"となり一切の変更が行えませんでした
(権限の変更を試みましたが上手くいきませんでした)


以上になります.長々と駄文を本当に申し訳ありませんでした.正直なところ私自身のOpenFOAMの基礎知識とLinuxの使用方法の基礎知識の双方が欠如しているためのエラーが多々あるかと思っています.もしよろしければ部分的でも構いませんのでアドバイス等をいただければと思います.どうぞよろしくお願い致します.最後に本当に長々と失礼致しました.







marangoniFvPatchVectorField.C
marangoniFvPatchVectorField.H

Youhei Takagi

unread,
May 28, 2012, 8:43:19 AM5/28/12
to open...@googlegroups.com
石川様

高木と申します。気づいたことをいくつか述べさせていただきます。

1.
まずはじめに、自作の境界条件等をコンパイルするときは、インストールディレクトリ
($WM_PROJECT_INST_DIR)ではなく、ユーザディレクトリ($WM_PROJECT_USER_DIR)で
コンパイルすることをおすすめします。インストールディレクトリはあまりいじらない方が
よいです。

2.
ブジネスク近似を用いたソルバーとしては、buoyantBoussinesq*Foamがありますので
参考にしてみてください。温度差マランゴニの場合は温度勾配が必要となるので、
ソルバーの適当なところでgradTの計算を付け加える必要があります。

3.
blockMeshDictではmarangoniのパッチを指定する必要はありません。Genericな"patch"に
して、速度の境界条件 0/U でmarangoni条件を指定すればOKです。

4.
CFD Onlineでmarangoni BCがアップロードされていたときは、OpenFOAMのバージョンが
1.6ぐらい?だったと思います。石川様が利用されているのは2.1なので、もしかしたら
少し不具合があるかもしれません。

以上ご参考までに。

石川

unread,
May 28, 2012, 10:02:54 AM5/28/12
to open...@googlegroups.com
高木様

お返事とご助言本当にありがとうございます

1と3に関しましてはすぐにそのようにしたいと思います.

また2.と4.に関しましては古いバージョンのOpenFOAM内でbuoyantBoussinesq系のソルバーを参考にしつつコンパイルを試みたいと思います.私が目指す物は温度差マランゴニ効果によって駆動する対流を目指しておりますのでgradTに関する計算も加えたいと思います.


取り急ぎ御礼申し上げます. またこの質問に関連することをお聞きする事もあるかと思います. 極力自己解決できるように努めますがもしよろしければまたご助言をいただければと思います.このたびは本当にありがとうございました




ohbuchi

unread,
May 29, 2012, 1:11:20 AM5/29/12
to OpenFOAM
こんにちは。
CFD-Onlineから1.6用のアーカイブをダウンロードし、コンパイルしてみましたが
私の環境(2.1.x)ではエラーなくコンパイルできました。
テストケースも、p→p_rghとし、fvSolutionとfvSchemesを若干修正したところ
計算実行できました。

エラーメッセージを見ると、porousZones.Cに問題がある様です。
今回加えたファイルではなく別の原因でライブラリがビルドできない状況の様です。

石川

unread,
May 29, 2012, 4:11:25 AM5/29/12
to open...@googlegroups.com
ohbuchi様お返事本当にありがとうございます.

という事は環境に依存した物ではなく私のコンパイル手順に問題がある可能性が高いとことでよろしいでしょうか.またテストケースの修正に関しましても記述していただきましてありがとうございます.

現在境界条件のコンパイルを行うにあたり、改めてソースパッケージをインストールを行いました.(filesの中身等を書き換えていたので念のため再インストール致しました)

そこで一つ疑問が生じているのですがソースパッケージのインストール手順に乗っ取って操作を行っている際に下記にあるように


Building the Sources

Go to the top-level source directory $WM_PROJECT_DIR and execute the top-level build script ./Allwmake. In principle this will build everything, but if problems occur with the build order it may be necessary to update the environment variables and re-execute ./Allwmake.

とありましたので、$WM_PROJECT_DIR 内で ./Allwmake. を実行致しますと大量のエラーメッセージと供に "権限が与えられていません" と表記されます chmod というコマンドを使用して権限の変更を試みてはいるのですが権限の変更は未だ行えておりません.environment variables の部分も参考にしているのですが ./Allwmake.を行いますとやはりエラーのようなものが出ております.私と致しましてはそもそもソースパッケージのインストール自体上手くいってないのでは?という疑問が生じております.


現状の解決策と致しまして

高木様にアドバイスをいただいた$WM_PROJECT_USER_内での新しい境界条件のコンパイルと、今回ohbuchi様にアドバイスしていただいた poronusZones.C 内のソースコードの確認をしてみようと思います. 

また何かお気づきの点などございましたら些細な事で構いませんので、お手数とは思いますがアドバイスをいただければと思います.お返事をしていただきまして本当にありがとうございました.





2012年5月29日火曜日 14時11分20秒 UTC+9 ohbuchi:

石川

unread,
May 29, 2012, 10:26:00 AM5/29/12
to open...@googlegroups.com
皆様こんばんは、度重なる投稿失礼致します.


まず高木様にいただいたアドバイス通りユーザーズディレクトリ内にてコンパイルを試みました.ディレクトリは下記のような作りになっております. 

/Open/FOAM/tomoki-2.1.0/applications/solver/marangoni_bc/

この中にMakeディレクトリを作成しfilesとoptionsというファイルを加えましてコンパイルを行ったところ,添付させていただいたディレクトリが作成できました.その後ohbuchi様のアドバイスを踏まえましてテストケース内でgradTの計算を含めたbuoyantBoussinesqSimpleFoamを実行したところ添付させていただいたエラーメッセージが現れました.エラーメッセージを見る限りやはりコンパイルができてないように思えます.wmakeを行った際のメッセージも添付させていただいているのですが,正直なところ申しますと私にはコンパイルの成否がわからず,問題解決に至っておりません.本当に基礎的な部分かと思いますがご助言をいただきたいと思い再度投稿させていただきました.


度重なる質問本当に申し訳ありません.この問題に関しまして知見のある方などいらっしゃいましたらお答えいただけないでしょうか.どうぞよろしくお願い致します.
marangoni_bc.zip
Error.pdf
wmake.pdf

Youhei Takagi

unread,
May 29, 2012, 11:39:05 AM5/29/12
to open...@googlegroups.com
高木です。

境界条件はライブラリのコンパイルになるので、filesの中身を、

marangoniFvPatchVectorField.C
LIB = $(FOAM_USER_LIBBIN)/marangoni_bc

としてコンパイルしてみてください。そして実際に、marangoni_bc.soが
できましたら、controlDictの最後に

libs ("marangoni_bc.so");

を追記して実行してみてください。
Message has been deleted

石川

unread,
May 29, 2012, 2:41:02 PM5/29/12
to open...@googlegroups.com
高木様

夜分遅くにも関わらずお返事本当にありがとうございました.

ご指摘通りに改善したところ前述のエラーメッセージは解消されました.テストケースの実行の際には未だエラーが出ており計算自体は実行できておりませんが,境界条件のコンパイルができたということで私にとっては大きな進歩となりました.度重なるご助言本当にありがとうございました.


(テストケースで生じてしまっているエラーメッセージも添付させていただきました.CFD Online の記述通りにソルバーを改造したつもりだったのですが、これに関してはCFD Online を参考にTgradの記述をもう一度確かめてみようと思います.)
error.pdf

Youhei Takagi

unread,
May 29, 2012, 11:33:29 PM5/29/12
to open...@googlegroups.com
高木です。

CFD Onlineの記事を読んでもらえばわかりますが、createFields.Hの
中で、gradTの書き出しを行う必要があります。他のfieldの記述をまねて
追記すればOKです。
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

石川

unread,
May 31, 2012, 10:45:35 AM5/31/12
to open...@googlegroups.com
高木様

お返事が遅れてしまい申し訳ありませんでした.高木様のアドバイス通りgradTの書き出しを行えるようになりました.度重なるアドバイス本当にありがとうございます.

今回で全ての問題が解決しました、とお返事をしたかったのですがparaViewによる可視化の段階で問題が生じてしまいました.そもそもの質問内容からかけ離れていて大変恐縮なのですが、どうにも解決策が見いだせずこちらに書かせていただきました.

高木様とohbuchi様のアドバイスを頼りに境界条件はコンパイルされ計算自体も実行されるようになりました.実行後に各タイムステップにおけるディレクトリも出力され各値も出力されているのですが,paraFoamを行いparaView上でApplyボタンをクリックしますとparaViewが強制的に終了してしまい、添付させていただいたようなエラーメッセージが現れてしまいます。エラーメッセージ内でmarangoni_bc.soについて表記されているのですが,ユーザーズディレクトリ内で存在は確認できており,(こちらのlib内にありますtomoki@tomoki-VirtualBox:~/OpenFOAM/tomoki-2.1.0/platforms/linuxGccDPOpt/lib$) またControlDict内にlibs ("marangoni_bc.so");という一文も加えております.

また今回の計算はCFDOnline 上でのテストケースでの計算がうまくいかなかったのでtutorialsのcavityディレクトリを改造した物です.

何度も何度も申し訳ありません.もし今回のエラーでご存知の点やお気づきの点などございましたら、方向性だけでも構いませんのでご意見をいただけないでしょうか.どうぞよろしくお願い致します.



最後に内容が伝わりやすいようにと勝手ながらいくつかファイルを添付させていただきました.添付させていただいた内容は


linuxGccDPOpt                                    :binとlibが含まれたディレクトリになります.lib内にmarangoni_bc.soが含まれます (tomoki@tomoki-VirtualBox:~/OpenFOAM/tomoki-2.1.0/platforms/linuxGccDPOpt/lib$)
marangoni_icoFoam.C                          :icoFoamをベースにTとgradTの計算を行います
createFields.H                                    :同上
error.pdf                                             :paraViewのApplyボタンをクリックしたさいに現れるメッセージになります
marangoni_cavity               :今回計算を実行したディレクトリになります(念のため計算結果も残してあります)
linuxGccDPOpt.zip
marangoni_icoFoam.C
createFields.H
error.pdf

石川

unread,
May 31, 2012, 10:51:54 AM5/31/12
to open...@googlegroups.com
すべての計算結果を含めますとファイルの容量が大きくなり投稿できませんでしたので、前半と後半部分のディレクトリを残しています.

夜分遅くに本当に申し訳ありませんでした.もちろん自分でも解決策を探して行きますので、もしもご存知の点やお時間に余裕がございましたらお返事をいただければと思います.

度重なる稚拙な質問の数々失礼致しました.


marangoni_cavity.zip

Youhei Takagi

unread,
May 31, 2012, 11:55:57 AM5/31/12
to open...@googlegroups.com
石川様

高木です。

0/Uで境界条件を指定するとき、

movingWall
{
type marangoni;
marangonicoeff 0.05;
value uniform (0 0 0); // required
}

としてみてください。Marangoni境界条件のときは、温度勾配から
速度勾配を算出しますが、このライブラリの仕様では valueを
指定する必要があります(ですが、指定する値は任意の値です)。

あと蛇足ですが、marangonicoeffは負の値になるのではないで
しょうか?

石川

unread,
May 31, 2012, 12:56:41 PM5/31/12
to open...@googlegroups.com
高木様


お返事本当にありがとうございます.戴いたアドバイスどおりに書き換えたところ見事にマランゴニ境界と温度差マランゴニ対流を再現する事ができました.まだparaViewの使用にも慣れておりませんので、簡単な画像の結果のみ添付させていただきました.またおっしゃる通り私が使用するであろう試験流体の表面張力差は温度勾配が負の方向に駆動するように作用する物ですのでおっしゃる通りmarangonicoeffは負に定義しなおしました.

何度も基本的な内容ばかり丁寧にお答えいただきまして本当にありがとうございました.今後ともこちらのコミュニティは利用させていただく機会があると思います.今度ともどうぞよろしくおねがい致します.

このたびは本当にありがとうございました.
iroiro.0000.jpg
iroiro.0008.jpg
iroiro.0016.jpg
iroiro.0024.jpg
Reply all
Reply to author
Forward
0 new messages