OpenFOAMによる熱解析の基礎講座 ~1人1台PC実習付~

講習テキストより

表題の講習会を、来る4月3日に東京、JTC(日本テクノセンター)で実施します。有料で、個人で受講するには、約5万円と少々お高いですが、興味のある方は受講下さい。 ⇒ セミナー申し込みページ

内容は、熱解析の具体例サンプルを同梱したDEXCS for OpenFOAM(R) の特別版を使用して、拙事業で実施している、OpenFOAMの初心者向け体験コースをベースに、この熱解析事例を併せて実習できるようにしたものです。

冒頭のイメージは、テキストの一部を抜粋したものですが、熱解析の事例としては、ヒートシンクをとりあげ、製品カタログに示された実測値との比較も実施しています。

DEXCS2012 for OpenFOAM(R) リリースノート

DEXCS for OpenFOAM(R) は、OpenFOAMと、これをより簡単・高度に活用できるようにする為の様々なツールをすべてインストール済のオール・イン・ワンパッケージで、誰でも簡単・即使えるようにしたマシンイメージ(isoファイル)です。

DEXCS2012では、OSやOpenFOAMのヴァージョンアップに対応、初心者向けのランチャーをより簡単にするとともに、DEXCS2011から搭載するようになった中級者向けツールの機能強化を図りました。

インストールと利用法

詳しくはこちら

  • マシンイメージなので、DVDにイメージ書き込みすれば、DVDから起動してそのまま利用することができます。 (DEXCS初体験の人はこのライブDVDとして「まずは使ってみる」方法をお薦めします。)
  • 起動後にインストール機能により、HDD等に直接インストールできる上、使用するユーザー名等を選択することができます。
  • VMWare Player等の仮想環境で起動して、仮想環境を作成することも簡単です。
  • 基本的に、DEXCS2011でやった方法と同じですが、同じやり方が通用しない部分が一部あるので、DEXCS2011の利用経験者はご注意のほど。

同梱プログラム

OSはLinux Mint13

といっても、ベースはUbuntu-12.04なので、アプリケーションのインストール方法などは、ubuntuのそれと全く同じです。違うのはデスクトップのGUI環境だけです。

標準のターミナル、ファイルマネージャ、テキストエディタがubuntuとは異なりますが、DEXCSランチャーやTreeFoamは、ubuntuの標準ツールを使用することを前提に作られているので、ubuntu互換ツールとして起動できるようにしてあります。

その他のドキュメントについて

  • DEXCSランチャーのヘルプメニューを参照下さい。
  • 本当に初めて使う人は、「ランチャーの使い方」-「まずは使ってみる」をご覧下さい。
  • 「ランチャーの使い方」-「形状作成」にて、Swiftツールの使い方を概略説明しています。
  • 「ランチャーの使い方」-「メッシュ」「計算実行」「結果処理」を理解できるようになると、OpenFOAMの基本的なファイル構造を理解できたことにもなります。
  • 以上は動画チュートリアルになっていますが、「フラッシュプレーヤー」を変更して参照することを強くお勧めします。変更方法は、最下段の「フラッシュプレーヤーの変更方法」をご覧ください。
  • Swiftツールのより実践的な使用方法は、以下の講習会資料をご覧ください。
  • JAVA gnuplot GUI の使用方法

 

ParaViewでアニメーション作成

 

ParaViewもWindows版だと、アニメーションファイル(.avi)を直接作成してくれるみたいなんですが、Linux版というか、DEXCSに搭載したParaViewでは、コマ撮りの画像(jpg,png など)しか作成してくれません。

これまでは、ネット情報(たとえば、こちら)を頼りに、ffmegのコマンドを馬鹿の一つ覚えで使っていました。

$ ffmpeg -r 15 -i desktop/q/img1%03d.JPG -vcodec mjpeg -sameq pancake.avi

しかし、ムービーの形式も色々あって、オプションが一杯あるようなんだが、これらを一々コマンドライン上で、書き換えなんぞやってられない。

そこで、このffmpegをGUIで使えるようにするソフト(WinFF)があるということまでは簡単に調べることは出来ていたんですが、基本的にムービー形式を変換することが主要な使い方みたい。コマ撮り画像をつなげてムービーにする方法がわからなかった・・・といったところまでが「まえがき」で、このたびようやくその方法がわかったので、ここに備忘録として記しておく次第です。

ffmegとWinFFのインストール

ubuntu系であれば、普通にパッケージマネージャからインストール出来ます。

仕掛け

ミソはここです。

コマ撮り画像が収納されたフォルダ中に、ファイルの連番部分を「%04d」に変更した空ファイルを作っておくことです。ここで「04」という数字は、連番が4桁の数字になっているからで、5桁であれば「05」にします。

WinFFの使い方

WinFFを起動したら、上記ファイルをドラッグ&ドロップ・・・

まぁ、後は説明するまでないでしょう。

Video Size を直接指定してやらないと、標準サイズにされてしまうところくらいでしょうか。Optionsボタンを押すと、この設定メニューが使えるようになります。

ムービーの形式やPresetメニューにははうんざりするほど選択肢があり、その分野には詳しくないので、何がお薦めかはわかりません。ものによってはエラーで変換できないものもありますが、まぁ自分なりに使えそうなものを試行錯誤してください。

 

DEXCS2012 for OpenFOAM(R) Lesson2

オープンCAEシンポジウム2012の講習会B(2012/12/14 に実施予定)の予告編を

YouTubeにアップしました。

 

 

バックの音楽が、まさに佳境・・・といったあたりで途切れてしまったのは効果満点でした。続きは本番の講習会のお楽しみといったところです。

教材(ライブDVD+テキスト)は当日配布予定です。ふるってご参加下さい。

 

DEXCS2012 for OpenFOAM(R) 製作メモ

DEXCS2010以来、isoイメージの基本的な製作方法は変わっていませんが、製作方法メモが散逸してしまっているので、ここにとりまとめておくことにしました。

DEXCS2012ではベースOSをこれまでのUbuntuからLinux Mintに変更した事で、一部の人からはUbuntuへの復帰を希望する声もあがっているようです。そういう人には独自にUbuntu版をリリースしてもらっていいんじゃないかと、その際の参考資料にしてもらえればと思います。Linux Mint といってもベースはUbuntuなので、アプリケーションのインストール方法などは全く同じです。違うのはデスクトップのGUI環境だけで、その設定箇所も明記しておきました。

但し、内容の説明に不十分な点が多々ある点は自覚しており、追って修正・追記していく予定ではありますが、ご指摘頂ければ、その作業も捗ることになりましょう。

また、こうしてまとめ直してみると、もうちょっとスマートにやる方法もあったんでないかと・・・何かと考えさせられます。

ベースOS(Linux Mint)の日本語化

参考サイト⇒http://linuxmint-jp.net/download.html

$ wget -q http://linuxmint-jp.net/linuxmint-ja-archive-keyring.gpg -O- | sudo apt-key add –
$ sudo wget http://linuxmint-jp.net/sources.list.d/linuxmint-ja.list -O /etc/apt/sources.list.d/linuxmint-ja.list
$ sudo apt-get update
$ sudo apt-get dist-upgrade

$ sudo apt-get install mint-gnome-ja

日本語フォルダ環境変更

  • せっかくOSを日本語化したのですが、CAEアプリの場合、フォルダー名に日本語を使うと、何かと不都合が生じる場合が多いので、フォルダ名だけは日本語表示させないようにしておきます。

$ export LANG=C
$ xdg-user-dirs-gtk-update
$ echo C > .config/user-dirs.locale

  • システム⇒コントロールセンター⇒自動起動するアプリ を起動し、「ユーザー・フォルダーの更新」のチェックマークを外しておく
  • ホームフォルダ中、Desktop以外のフォルダーを全て削除

 

remastersys

  • 再配布用isoイメージを作成するツールです。

参考サイト⇒http://www.geekconnection.org/remastersys/

  • http://www.remastersys.com/ubuntu/remastersys.gpg.key を入手し、適当な場所へ保存しておく。
  • Synapticパッケージマネージャの、「設定」⇒「リポジトリ」を選択すると新たにメニューが現れる。「認証」タブを選択し、「鍵ファイルのインポート」ボタンを押して、上記ダウンロードした鍵ファイルを読み込む。
  • 引き続き、「他のソフトウェア」タブを選択したメニューにて、「追加」ボタンを押すと、APTラインの入力を促されるので、以下入力。

deb http://www.remastersys.com/ubuntu precise main

  • 「ソースを追加」ボタンを押せばソフトウェアソースのリストに追加される。但しその際、上記ラインともう一つ、以下も追加されるが、こちらの方はチェックマークを外しておく。

deb http://www.remastersys.com/ubuntu precise main(ソースコード)

  • 設定画面を閉じて、パッケージマネージャの「再読込」ボタンを押す。
  • remastersysy, remastersys-gui がパッケージリストに出てくるようになるので、これをインストールする。

 

アプリケーションのインストール

再配布用のDEXCSイメージを作成する際に、上記導入したremastersysを使いますが、remastersysを含めてパッケージマネージャを使ってインストールしたアプリケーションはそのまま使えるようになります。しかしそうでないものを再配布用のDEXCSイメージでも使えるようにするには、それなりの手当が必要です。

パッケージマネージャにて新たにインストールするアプリケーション

emacs

    • 一口にemacsと言って、色々なGUIインタフェースがあるのですが、DEXCS for OpenFOAMでは、Synapticパッケージマネージャで、emacs23-lucidをインストール指定している。理由は全くの個人的な好みによるもの。

FreeCAD

    • Extensible Open Source CAx program (alpha)
    • 普通にインストールしただけでは、初期画面がまっさらで、ツールメニューなど何もないので、これをカスタマイズして、ホームディレクトリ下にできた.FreeCADを、/etc/skelの下へコピーしておきます。

python-wxGlade

    • wxPython を使って Python により書かれた GUI デザイナ
    • wxGlade は有名な GUI ツールキットである wxPython を使って Python により 書かれた GUIデザイナであり、wxWidgets/wxPython ユーザインターフェイスの作成 を補助します。現時点では、Python、C++ および XRC
      (wxWidgets の XML リソース) コードを生成できます。

SPE

    • Stani の Python エディタ
    • Spe は Python 用 IDE であり、自動インデント、自動補完、関数 tips、 構文配色、構文強調、UMLビューア、クラスエクスプローラ、ソースインデックス、 自動 todo リスト、メモ帳、pycrust シェルの統合、Python ファイルブラウザ、最近編集したファイルのブラウザ、ドラッグアンドドロップ、 コンテキストヘルプなどの機能があります。Special は Blender 三次元
      オブジェクトブラウザと Blender 内で対話的に起動する機能により Blender をサポートします。Spe は wxGlade と XRCed(gui デザイナ)、 PyChecker (ソースコード診断ツール)、そして Kiki (正規表現端末) が同梱されます。 Spe は
      wxGlade により拡張可能です。

kdiff3

    • KDiff3 は 2 個または 3 個の入力ファイルを比較して、一行単位、一文字単位で差分を表示します。自動マージ機能や、マージ時の衝突を解消するための利用しやす い統合されたエディタを提供します。
    • KDiff3は再帰的なディレクトリ比較やマージ も可能です。
    • なので、ケースファイルを比較して、相違点を見つけるといった用途に使えます。

browser-plugin-gnash

    • GNU Shockwave Flash (SWF) player – Plugin for Mozilla and derivatives

gnome-terminal

    • Ubuntuで標準のコマンド・ライン端末です。
    • Linux Mint Mate版ではmate-terminalが標準ですが、DEXCSやTreeFoamはこれまでUbuntu上で開発してきた経緯があり、この端末を使用しているのでこれも追加インストールしてあります。

nautilus

    • Ubuntuで標準のファイル・マネージャです。
    • Linux Mint Mate版の標準は、Cajaですが上に述べたのと同じ理由で追加インストールしてあります。

gedit

    • Ubuntuで標準のテキスト・エディタです。
    • Linux Mint Mate版の標準は、plumaですが上に述べたのと同じ理由で追加インストールしてあります。

xterm

    • 昔ながら(?)の端末です。
    • helyxOSで必要になります。

eog

    •  画像ビューアプログラム Eye of GNOME
    • DEXCSランチャーのポスト処理で、gnuplotで作成したグラフ表示に使用します。

手動でインストールするアプリケーション

  • 入手に必要なヴァージョン管理システムやら、コンパイルに必要なライブラリは以下の通り。

$ sudo apt-get install git-core

$ sudo apt-get install subversion

$ sudo apt-get install python-numpy

$ sudo apt-get install python-dev

  • 以下、OpenFOAM〜helyxOSのインストールまでは、一旦ホームディレクトリ直下にOpenFOAMというフォルダを作成し、その中でインストールしますが、再配布用には、OpenFOAMのフォルダ以下、/opt/の下に移動し、ホームディレクトリ下にシンボリックリンクをはっておきます。

$ cd
$ ln -s /opt/OpenFOAM OpenFOAM

OpenFOAM

参考サイト⇒http://www.openfoam.org/download/git.php

$ cd

$ mkdir OpenFOAM

$ cd OpenFOAM

$ git clone git://github.com/OpenFOAM/OpenFOAM-2.1.x.git

$ sudo apt-get install build-essential flex bison cmake zlib1g-dev qt4-dev-tools libqt4-dev gnuplot libreadline-dev libncurses-dev libxt-dev

$ sudo apt-get install libscotch-dev libopenmpi-dev

$ cd OpenFOAM-2.1.x

$ . etc/bashrc

$ ./Allwmake

ParaView

    • 基本的に、OpenFOAMの参考サイトに記してある通り、OpenFOAMのコンパイルに引き続いて、

$ cd $WM_THIRD_PARTY_DIR
$ ./makeParaView

    • で良いのですが、このままだとpythonスクリプトが使えないので、makeParaViewスクリプトを一部変更する。

# MPI support:

withMPI=true
MPI_MAX_PROCS=32

# Python support:
# note: script will try to determine the appropriate python library.
# If it fails, specify the path using the PYTHON_LIBRARY variable
withPYTHON=true
# PYTHON_LIBRARY=””
PYTHON_LIBRARY=”/usr/lib/libpython2.7.so.1.0″

    • ParaViewのコンパイルが終わったら、

$ cd $FOAM_UTILITIES/postProcessing/graphics/PV3Readers
$ wmSET
$ ./Allwclean
$ ./Allwmake

pyFOAM

 

参考サイト⇒http://openfoamwiki.net/index.php/Contrib_PyFoam

cd $HOME/OpenFOAM

$ svn co https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder/other/scripting/PyFoam/

$ cd PyFoam

$sudo python setup.py install

    • 再配布用イメージでの動作に不具合を生じないように、一部chownすべきファイルがありましたが、その名前は失念しました。

swak4Foam

参考サイト⇒http://openfoamwiki.net/index.php/Contrib/swak4Foam

 

$ cd $HOME/OpenFOAM

$ svn checkout https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_2.0/libraries/swak4Foam/

$ cd swak4Foam

$ ./Alwmake

$ cd $FOAM_USER_LIBBIN

$ mv * ../../../../OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/

$ cd ../bin

$ mv * ../../../../OpenFOAM-2.1.x/platforms/linuxGccDPOpt/bin/

  • コンパイルしたライブラリなど通常、$FOAM_USER_LIBBINに生成されますが、この場所は再配布用イメージに引き継ぐことが出来ないので、共通場所である$FOAM_LIBBINに移動しています。

helyxOS

    • 64bit版のみ

入手先⇒http://sourceforge.net/projects/helyx-os/

    • $HOME/OpenFOAM にて解凍
    • chmod 755 helyxOS.sh
    • 起動用スクリプト(helixOS)を以下作成し、/usr/binへ収納

#!/bin/bash
. $HOME/OpenFOAM/OpenFOAM-2.1.x/etc/bashrc
export PATH=$HOME/OpenFOAM/Engys/HelyxOS/v100/:$PATH
export LANG=en
helyxOS.sh

  • ランチャーコマンドは、以下設定

/usr/bin/helixOS

Blender

入手先⇒http://www.blender.org/download/get-blender/

    • /opt/にて展開

$ sudo ln -s /opt/blender-2.64a-linux-glibc27-i686/blender /usr/bin/blender

SwiftBlock

入手先⇒https://github.com/nogenmyr/swiftBlock

    • /opt/blender-2.64a-linux-glibc27-i686/2.64/scripts/addons/ に展開し、chmod 755
    • 但し、現時点における最新版(2012/10/21のタイムスタンプ)はバグがあるようなので、その前のヴァージョンを利用している。

 

SwiftSnap

入手先⇒https://github.com/nogenmyr/swiftSnap

    • /opt/blender-2.64a-linux-glibc27-i686/2.64/scripts/addons/ に展開し、chmod 755

JAVA gnuplot GUI

入手先⇒http://sourceforge.net/projects/jgp/

    • /opt/にて展開
    • ランチャーコマンドは、以下設定

java -cp /opt/jgp/classes jgp.gui.JGP

TreeFoam

    • /opt/にて展開
    • ホームディレクトリ下にシンボリックリンクをはっておきます。

$ cd
$ ln -s /opt/OpenFOAM OpenFOAM

    • ランチャーコマンドは、以下設定

/opt/TreeFoam/treefoam

デスクトップ周り

壁紙とアイコン

入手先⇒http://dexcs.gifu-nct.ac.jp/pukiwiki/index.php?DEXCS%A4%CE%A5%ED%A5%B4

  • 壁紙は、/usr/share/backgrounds/ に収納

$ cd /usr/share/backgrounds/linuxmint

$ sudo rm default_background.jpg

$ sudo ln -s ../DEXCS2012-desktop\ .png default_background.jpg

  • アイコンは、/usr/share/icons に収納

再配布用の仕組み

remastersys で再配布イメージを作成する際に、/home ディレクトリ下にあって再配布イメージに継承したいものは、/etc/skel下に収納しておけば、継承してくれるのですが、ユーザーの名前までは継承してくれません。そこでDEXCSでは、ユーザー名を継承できるように、セットアップスクリプトを同梱して配布するようにしています。

一方、/home ディレクトリ下でない箇所(/optや/usr/binなど)に追加したファイルは自動的に再配布用イメージに継承されますが、ただ問題は全てファイルのオーナーがrootになってしまう点です。単にアプリケーションを実行するだけで済ませられるようなアプリはそれで構いませんが、そうでない(OpenFOAMなどOpenFOAMの下に各ユーザー固有のワークディレクトリを作成するなどの)アプリの場合は、前もって書き込み権限を付与していくことで対処しています。

再配布用/etc/skelのセッティング

    • /etc/skel下に収納するファイルの管理が煩雑になってきたので、DEXCS2012からは、これらをスクリプトで管理するようにしました。

#!/bin/sh

rm -rf /etc/skel/.FreeCAD/
cp -r .FreeCAD/ /etc/skel/

#rm -rf /etc/skel/.blender/
#cp -r .blender/ /etc/skel/

rm -rf /etc/skel/.gconf/
cp -r .gconf/ /etc/skel/

rm -rf /etc/skel/.config/
cp -r .config/ /etc/skel/

rm -rf /etc/skel/.mateconf/
cp -r .mateconf /etc/skel/

rm -rf /etc/skel/.local/
cp -r .local /etc/skel/

rm -rf /etc/skel/Desktop/DEXCS
cp -r Desktop/DEXCS /etc/skel/Desktop/

rm -f /opt/TreeFoam/Ver*
rm -rf /opt/OpenFOAM/dexcs*

  • remastersysを実行する前に、ホームディレクトリ下で上記スクリプトをスーパーユーザ権限で実行しておきます。
  • 赤字部分が、Linux Mint 版での固有セッティングです。この中に追加したランチャーの設定ファイルなどが収納されています(ここだけではありませんが)。Ubuntu版ではここを相応なもので置き換えてやることになると思いますが、特に12.04以降は、あまり触っていないので定かではありません。

再配布イメージに同梱するセットアップスクリプト(setupDEXCS.sh)

    • DEXCSをインストールする際、最初に実行するセットアップスクリプトです。

#!/bin/sh
WHO=`whoami`
echo “#!/bin/sh” > ~/Desktop/DEXCS/startup1.sh
LIST=~/Desktop/DEXCS/setup.list
while read i
do
echo “sed ‘s/dexcs\/Desktop/$WHO\/Desktop/g’ $i > ~/Desktop/DEXCS/temp” >> ~/Desktop/DEXCS/startup1.sh
echo “sed ‘s/dexcs\/デスクトップ/$WHO\/Desktop/g’ ~/Desktop/DEXCS/temp > $i” >> ~/Desktop/DEXCS/startup1.sh
echo “sed ‘s/home\/dexcs/home\/$WHO/g’ $i > ~/Desktop/DEXCS/temp” >> ~/Desktop/DEXCS/startup1.sh
echo “cp ./DEXCS/temp $i” >> ~/Desktop/DEXCS/startup1.sh
done < ${LIST}

chmod +x ~/Desktop/DEXCS/startup1.sh
~/Desktop/DEXCS/startup1.sh
mv ~/Desktop/DEXCS/DEXCS2012.desktop ~/Desktop/
. /opt/OpenFOAM/OpenFOAM-2.1.x/etc/bashrc
mkdir -p $FOAM_RUN
mkdir -p $FOAM_USER_APPBIN
cp ~/Desktop/DEXCS/launcherOpen/snappyDictExporter.py $FOAM_USER_APPBIN
cp ~/Desktop/DEXCS/launcherOpen/bcFilesConverter.py $FOAM_USER_APPBIN
rm ~/Desktop/ubiquity-gtkui.desktop -f
rm ~/Desktop/setupDEXCS.sh
killall -u $WHO

    •  再配布イメージにて、新たにユーザー名を変更する場合に、ユーザー名に応じてパスが直打ちになっている部分を書き直しています。マスターディスクでは、ユーザー名をdexcsとしているので、/home/dexcs の部分を、/home/($WHO)に変更
    • 変更が必要なファイルの名前リストは、~/Desktop/DEXCS/setup.listに記してあります。

~/Desktop/DEXCS/DEXCS2012.desktop
~/Desktop/DEXCS/dexcs.wxg
~/Desktop/DEXCS/launcherOpen/dexcs.py
~/Desktop/DEXCS/SWAK/dexcsSWAK.wxg
~/Desktop/DEXCS/SWAK/myDialog1.wxg
~/Desktop/DEXCS/SWAK/myDialog2.wxg
~/Desktop/DEXCS/SWAK/testFrameListBox.wxg
~/Desktop/DEXCS/SWAK/dexcsTextSsercher.wxg
~/Desktop/DEXCS/SWAK/timeLinePlotter.wxg
~/.config/mate/panel2.d/default/launchers/gnome-terminal.desktop
/opt/TreeFoam/treefoam.py
/opt/TreeFoam/treefoam.1.25
/opt/TreeFoam/configTreeFoam
/opt/TreeFoam/wxg/runParallelDialog.wxg
/opt/TreeFoam/wxg/separateCellZoneGroupDialog.wxg
/opt/TreeFoam/wxg/changeZoneNameDialog.wxg
/opt/TreeFoam/wxg/changeConfigTreeFoamDDialog.wxg
/opt/TreeFoam/wxg/changeConfigTreeFoamDialog.wxg
/opt/TreeFoam/wxg/selectConjugateCouplingFieldsDialog.wxg
/opt/TreeFoam/wxg/meshOperationDialog.wxg
/opt/TreeFoam/wxg/mergeZonesDialog.wxg
/opt/TreeFoam/wxg/selectFieldsForEditDialog.wxg
/opt/TreeFoam/wxg/selectFluidRegionDialog.wxg
/opt/TreeFoam/wxg/inputTextDDialog.wxg
/opt/TreeFoam/wxg/setCouplingConjugateDialog.wxg
/opt/TreeFoam/wxg/plotWatcherDialog.wxg
/opt/TreeFoam/wxg/openGridEditorDialog.wxg
/opt/TreeFoam/wxg/setDataInFieldsDialog-bak.wxg
/opt/TreeFoam/wxg/setDataInFieldsDialog.wxg
/opt/TreeFoam/wxg/saveCSV_Dialog.wxg
/opt/TreeFoam/wxg/gaugeDDialog.wxg
/opt/TreeFoam/wxg/editBoundaryConditionsDialog.wxg
/opt/TreeFoam/wxg/openFieldForGridEditorDDialog.wxg