CAE

【オープンソース流体解析】OpenFOAMカスタマイズしたいので準備をしています。

こんにちは(@t_kun_kamakiri)。

流体解析のオープンソースであるOpenFOAMのカスタマイズをしたいな~って思って記事を書き始めています。

OpenFOAMに関する記事は何個か書きましたが、自分で解析したいようにカスタマイズした経験はないので勉強しようかなと思っています。

OpenFOAMに関する記事はこちら

 

OpenFOAMはC++で書かれているのですが、今の僕はC++を全く理解していませんし、C++で数値計算をしたこともありません。
それに、流体力学の知識はあったとして、流体解析をまともにできる知識もあまりないのです。

でも、OpenFOAMで流体解析ができたら仕事でも使えますし、何よりソースコードがオープンになっているのでカスタマイズしたいじゃないですか(^^♪

カマキリ

カスタマイズできたら楽しそうじゃないですか?

OpenFOAMをカスタマイズするにあたっては、色々としなくてはいけないことがあるので本記事でまとめておこうと思います。

本記事の内容

  • OpenFOAMのインストール
  • WSLでのフォルダ・ファイルの権限について
  • 環境変数の確認
  • C++の勉強について

 

カスタマイズするにあたって参考になる記事を以下にまとめておきます。
※たぶんもっと情報があると思うので探しては追記していきます。

これくらいが、とりあえず手順を丁寧に書いている参考記事ではないでしょうか。

OpenFOAMはバージョンが違うとソースコードの中身が違っていたりするので、注意する必要があります。

【使用環境】
Windows10
WSL (Windows Subsystem for Linux)
OpenFOAM-v1912

OpenFOAMのインストール方法

 

現在、財団版ESI版の2種類のバージョンが存在します。

OpenFOAMの環境を整える方法は色々あるのですが、Windows10ならWindows上にLinuxを導入してしてOpenFOAMをインストールする方法が簡単で使いやすいので、僕はそうしています。

【OpenFOAMのインストール】
The OpenFOAM Foundationのインストール:OpenFOAM の Windows 10 へのインストール
ESI (OpenCFD社)のインストール:OpenFOAM+ の Windows 10 へのインストール

無事、OpenFOAMをWindows上で使えるようになりました(^^)/

フォルダ・ファイル権限の確認

 

WSLで追加のファイルを作成しようと思うと、なぜか権限がなくファイルの編集を行うことができません。

カマキリ

結構、めんどうだなと思って色々調べていました。

例えば、Windows上で「/home/kamakiri/OpenFOAM/kamakiri-v1912/」に移って「applications」というフォルダを作成してみます。
これをLinux上でフォルダ権限を見ると、権限がないことが確認できます。
※Linuxでの権限についてはこちらがわかりやすいです。

これの何が問題かというと、ファイルをコピーしても編集の権限がないため、編集ができないということになります。

例えば、今から「/opt/OpenFOAM/OpenFOAM-v1912/applications/solvers/incompressible」というOpenFOAMの本体のソースコードを、自身でカスタマイズするためのフォルダ(「 /home/kamakiri/OpenFOAM/kamakiri-v1912/applications/solvers/incompressible」)にWindows上でコピーしたとします。

※「/applications/solvers/incompressible」の部分はフォルダを自身で作成してください。

そして、Linux上で「applications」のフォルダで移動しようとすると、以下のようになります。

カマキリ

権限がない?(/・ω・)/

じゃー権限を付ければいいのか・・・ってことで、以下のコマンドを打ちます。

これで権限を確認してみます。

これで、「applications」に移動することができますが、また「solvers」の中に移動することができません💦

で、権限を確認すると・・・

 また、「solvers」に権限がないことが確認できます。

こんな感じで、ひとつひとつに権限を与えていたらキリがないので、階層以下のフォルダ全てに権限を与えるというのをやります。

そうすると、「applications」以下の階層のフォルダとファイルは全て権限がついて編集することができます。

これでOKと思いきや、例えばWindows上で以下のように新しいファイルを「icoFoam」の中に作成してみて、Linux上でファイル権限の確認をします。

Windows上でファイル作成:「TEeq.H」

権限確認

Linux上で見ると「TEeq.H」というファイルの表示がありません!

試しに、Linux上で「TEeq_linux.H」というファイルを作ってみます。

Linux上でファイル作成:「TEeq_linux.H」

すると「TEeq_linux.H」というファイルが作成され、権限には読み書きができるようになっています。

試しに、Windowsにインストールしているエディタ(今回はVisual Stdio Codeを使用)でファイル編集をして、Linux上の「vim」で中身を確認してみましょう。

どうやら、Linuxで作成したもの(読み書きの権限ありのファイル)は、Windowsのエディタで編集してもちゃんと編集が反映されているのがわかります。

というわけで、

【結論】

  • コピー、ファイル作成、ファイル削除できるだけLinux上のコマンド操作で行う!
  • 編集はWindowsのエキスとエディタで行う!

これが一番楽でしょう!

では、以下からが本題です。

環境変数を確認しておく

 

OpenFOAMにはファイル移動などを簡単に行えるように、環境変数が設定されています。

環境変数を確認するには、

と打てば確認できます。

では、本記事で出てくる環境変数を以下にまとめておくと便利でしょう!

環境変数
$WM_PROJECT_DIR/opt/OpenFOAM/OpenFOAM-v1912
$WM_PROJECT_USER_DIR/home/kamakiri/OpenFOAM/kamakiri-v1912
$FOAM_SOLVERS/opt/OpenFOAM/OpenFOAM-v1912/applications/solvers
$FOAM_USER_APPBIN/home/kamakiri/OpenFOAM/kamakiri-v1912/platforms/linux64Gcc63DPInt32Opt/bin
$FOAM_TUTORIALS/opt/OpenFOAM/OpenFOAM-v1912/tutorials
$FOAM_RUN/home/kamakiri/OpenFOAM/kamakiri-v1912/run

ある環境変数の値の確認を行いたい場合は、「echo $環境変数」とすれば確認できます。

【結果】

 

このように環境変数を確認することができます。

OpenFOAMでは特に環境変数を使って解説をしている記事も多いので、Linux初心者は「$FOAM_TUTORIALSって何?」となりやすいので、環境変数の値は何かまとめておくと良いですね。

 

C++の勉強について

 

自分自身がC++の知識が全くないので、いちから勉強する必要があります。

C++は、C言語にオブジェクト指向(クラスなどが使える)を追加して拡張された言語であるとのことなので、まずはC言語から勉強をはじめています。

「Cの絵本」はとてもわかりやすくて、すらすら読めます。
ページ数も多くないので、僕はこれを1週間くらいで読み終えました。

Cの絵本 第2版 C言語が好きになる新しい9つの扉

Cの絵本 第2版 C言語が好きになる新しい9つの扉

株式会社アンク
1,518円(09/20 19:04時点)
発売日: 2016/12/15
Amazonの情報を掲載しています

C言語の環境構築はWSLで使えるようにしています。エディタはVisual Stdio Codeです。
環境構築については、こちらのQiitaの記事が参考になります。

C言語もむちゃくちゃ詳しくなる必要はないと思いますが、一応コードを書いて計算実行したりして理解をしていきました。
「Cの絵本」だけでは詳しいところまでは学べないので、以下の参考書も手元に置いています。

新・明解C言語 入門編 (明解シリーズ)

新・明解C言語 入門編 (明解シリーズ)

柴田 望洋
2,505円(09/20 19:04時点)
発売日: 2014/08/09
Amazonの情報を掲載しています

ページ数も多く詳しく書かれていますし、説明もとてもわかりやすいです。

 

そして、C言語がそこそこ理解できたらいよいよC++の勉強を始めていきます(👈今、ここ)
同じく「C++の絵本」を買って読もうと思ったのですが、あまりサンプルコードが載っていなかったので読むのをやめました(「Cの絵本」はサンプルコードあったのに・・)

以下の、「猫でもわかるシリーズ」で勉強を進めています。

猫でもわかるC++プログラミング 第2版 (猫でもわかるプログラミング)

猫でもわかるC++プログラミング 第2版 (猫でもわかるプログラミング)

粂井 康孝
2,420円(09/20 23:57時点)
発売日: 2013/07/25
Amazonの情報を掲載しています

これが結構わかりやすいですし、サンプルコードも程よい量で載っています。

あとは、やっぱり詳しいところまで知りたい場合は以下の参考書に頼ります。

新・明解C++入門編 (明解シリーズ)

新・明解C++入門編 (明解シリーズ)

柴田 望洋
3,025円(09/20 19:04時点)
発売日: 2017/12/16
Amazonの情報を掲載しています

 

あとは、Twitterで教えてもらったこれとかを手元に置いています。

 

ロベールのC++入門講座

ロベールのC++入門講座

ロベール
4,180円(09/20 23:57時点)
発売日: 2007/11/15
Amazonの情報を掲載しています

 

では、OpenFOAMのC++はかなり特殊らしいのですが、C++の基礎知識を身につけないことにはどうしようもないのでまずは2週間程度でC++の基礎を身につけたいと思います(^^)/

OpenFOAMの参考書

 

OpenFOAMの参考書と言えば、こちらのサイトを書籍にまとめなおした☟これがおすすめです。

OpenFOAMによる熱移動と流れの数値解析

OpenFOAMによる熱移動と流れの数値解析

3,520円(09/20 17:41時点)
発売日: 2016/06/17
Amazonの情報を掲載しています

ただOpenFOAMのバージョンが古いもので書かれれていたり、OpenFOAMを全く知らない人が読むと結構わかりにくかったりします。

まず、「どうやってOpenFOAMをインストールするの?」というところでつまずきます。

そんな時は、以下の書籍をおすすめします。

OpenFOAMお勧め書籍

インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。
著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。
関連記事もどうぞ