OpenFOAM

【topoSetコマンド(OpenFOAM)】3次元ダムブレイクモデル作成(1)

こんにちは(@t_kun_kamakiri

OpenFOAMのメッシュ操作のユーティリティであるtopoSetについて解説を行います。

この記事の内容
  1. topoSetコマンドの使い方を理解する。
  2. topoSetでセルセットを作成する。

OpenFOAM初心者でチュートリアルを動かしたことがある方を対象にしています。

DEXCS2020
OpenFOAM v2006

チュートリアルのケースファイル

実験データとOpenFOAMのチュートリアルケースファイルを入手します。

実験データ

今後、3次元ダムブレイクの実験との比較を行うため実験データを入手します。
OpenFOAMで作成する寸法も実験に合わせて作成します。

ケースファイルの入手

実験の寸法に近しいケースファイルのチュートリアルから入手します。
以下のコマンドを打って解析実行したいフォルダにコピーしてきます。

ファイル構成は以下のようになっています。

treeコマンドを打って確かみましょう。

今回はsystem/topoSetDictの中身の解説を行います。

ベースメッシュ作成 blockMesh

まずはベースとなるメッシュ作成のためsystem/blockMeshDictの中身を編集します。

system/blockMeshDict

 

ターミナルで以下のコマンドを打つとベースメッシュが作成されます。

作成されたメッシュをparaviewで確認します。

topoSetコマンド

topoSetコマンドはディクショナリファイルを元にsystem/topoSetDict の設定に従ってセルセット、フェイスセット、セルゾーン、フェイスゾーンなどを作成するユーティリティです。

system/topoSetDict

  1. セットの中身を削除
    セットの初期化を行っている。
  2. セットの反転
    現在選択していないセットを選択する。
    まだ何もセットを作成していないから選択されたセットはblockMeshで作成されたメッシュ全体のセットとなります。
  3. box作成
    boxでMin座標とMax座標を指定
    「action subtract」で②で作成したセットから③で作成したboxを削除している

では、以下のコマンドでtopoSetを実行してみましょう。

topoSetのオプションとしては以下があります。

-case <dir> ケースディレクトリを指定します。デフォルトでは現在いるディレクトリです。
-constant constantディレクトリにも適用します。
-decomposeParDict <file> 特定の場所からdecomposeParDictファイルを読み込む場合に使用します。
-dict ディクショナリファイルを指定します。(デフォルトはsystem/topoSetDict)
-latestTime 最新の時間ステップのみに適用します。
-newTimes 新しい時間ステップのみに適用します。
-noFunctionObjects functionObjects を実行しないようにします。
-noSync  隣り合ったパッチを選択しないようにします。
-noZero 0ディレクトリを除外します。
-parallel 並列で実行します。
-region <name> 別のメッシュ領域を指定します。
-roots <(dir1 .. dirN)> 複数のケースを処理する場合にディレクトリを指定します。
-time <ranges> 指定した時間ステップ内に適用します。 設定例: ‘:10,20,40:70,1000:’
-srcDoc ブラウザを用いてソースコードを表示します。
-doc ブラウザを用いてドキュメントを表示します。
-help ヘルプを表示します。

 

paraviewで確認してみましょう。

cellset/c0を選択すると障害物があるセルセットができています。

カマキリ

使い方は簡単ですね

topoSetコマンドを使って色々なセルセットを作ることもできます。

(おまけ)球体のセルセット

次は、先ほどのblockMeshで作成したベースメッシュを使って球体のセルセットを作ってみましょう。

system/topoSetDictは以下のようにします。
記述方法は公式サイトのユーザーガイドから参考にします。

system/topoSetDict

 

先ほど作成したセルセットは、リセットするスクリプトを使っていったん削除する必要があります。以下のコマンドを打ってリセットしましょう。

これにてリセットできましたので、またblockMeshコマンドを打ってベースメッシュを作成し、上のtopoSetDictを使ってセルセットを作成します。

paraviewで結果を見てみましょう。

topoSetDictで以下のような球体(中心 (1.5 0 0.5)、内径0.05、外形0.2)を作成するようにしています。

ベースメッシュが球体形状になっていないためメッシュがカクカクしていますね。
ちゃんと球体形状にしたい場合はベースメッシュのセルも球体に沿った形で作成をする必要があります。

ちなみにセルセットからセルゾーンを作成する場合は「source setToCellZone」とすれば良いです。

system/topoSetDict

 

今回のような球体のセルゾーンは例えばバスケットボールまわりの流れをMRF(Multiple Reference Frame)で回転を与える場合などに使うことができます。

こちらの記事はOpenFOAMの使い方シリーズとして書いていきます。

まとめ

今回は3次元ダムブレイクのチュートリアルで使われているtopoSetコマンドについて解説を行いました。

次回の記事で紹介するsebsetMeshコマンドと合わせて使うことで色々なメッシュ作成がOpenFOAMのユーティリティだけで作成することができます。

参考書

PENGUINさんサイトを体系的に学べる書籍となっています。ネット記事でも十分勉強できるのですが、OpenFOAMの初学者でOpenFOAMをインストール済みであれば一冊持って置き、体系的に学ぶのが良いでしょう。

OpenFOAMによる熱移動と流れの数値解析(第2版)

OpenFOAMによる熱移動と流れの数値解析(第2版)

3,520円(12/06 08:52時点)
Amazonの情報を掲載しています

あとは初心者向けに丁寧に解説がされているこちらの書籍もお勧めです。最後の章にはオーバーセットメッシュ(重合メッシュ)の機能を使った解析を最後まで丁寧に解説しているので挫折することはないでしょう。

OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
1,100円(12/06 22:35時点)
発売日: 2021/02/26
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です