有限要素法のフリーのソフトウエア を試す

CAEで使われるフリーの有限要素法(FEM)ソフトウエアであるCalculixやOpenfoamを使ってみようとチャレンジしてたその足跡を残す。。。ついでに他のフリーソフトや商用ソフトの無償版にも手を出してみる。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

まずparaviewでopenfoamのメッシュを見てみる

これからparaviewを使ってopenfoamの結果を見ていくわけだが
ひとつ事前準備がいる。
….foamというダミーのファイルを(…は何でも良い。)実行したディレクトリに作っておく必要がある。014_openfosmdir.png

ダミーのようなのでファイルの種類も何でもいいと思うが、テキストファイルでよいだろう。ただし拡張子は.foamにする必要があるようだ。
それではまずメッシュの見方から確認していこう。

左上のopenのフォルダをクリックして作成した….foam(今回の場合result.foam)を選択して開く。
なおマウスの真ん中ボタンドラッグで並進移動、左ドラッグで回転移動、右ドラッグは拡大縮小表示である。
すると自動的に結果を読んでくれる。
015_openr.png
すると、左側のPipeline Browser内に読み込んだファイルが選択され、左側の目が有効になっている状態であろう。次にproperties windowに行く。表示されていない場合はメニューバーからviewを選び、Propertiesにチェックをつければ表示されるはずである。016_properties.png
017_properties_window.png

この状態でapplyを押し、と時間0の状態の圧力分布コンター図が出てくるはずでそれを表示させる。
時間0なので圧力も全域にわたって殆ど0の状態だと思う。ここからメニュー中央部にある
representationをwireframeにして、その下のColoringSolid Colorにするとメッシュ図が表示されるはずである018_properties_mesh.png
019_propertymesh.png
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村





スポンサーサイト
  1. 2016/12/01(木) 17:34:47|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

これは定常解析、非定常解析?

さて、次にコンター図とベクトル図の表示の仕方を説明したいと思うが、その前にこの解析いったい何を計算したかを改めてみてみる。
モデルの形状や境界条件は以前説明したが、
定常解析なのか、非定常解析なのか
層流解析なのか乱流解析なのか
等触れてこなかった部分も多い。

実はopenfoamはこれらどんな解析をするかによって使用するプログラム(ソルバー)が違うのであり、それらを指定しなければならない。
tutrialのときにフォルダをして指定したがその階層に
icofoam
というのがあったと思う。
これがソルバーの名前のひとつであり、今回はicofoamで解析を行っている。
icofoamどのようなソルバーかとググって調べてみると
非定常層流解析のソルバーらしい。
そのほかいくつか乱流ソルバーや拡散方程式のソルバー、熱伝導方程式のソルバーなどなどあるようだ。
今回はicofoamを使って層流の非定常解析を行っている。
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/02(金) 07:39:59|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

Opwnfoamの圧力コンター図

24_openresult_foam1.png

さて、まずコンター図だが圧力分布図を例にとろう。
まず計算の終わった解析で、そのフォルダーの作った….foamを開く

続いてapplyを押す。
すると、通常、圧力のコンター図が表示される。

しかし、これは時間0つまり初期状態なのでモデル全体にわたって殆ど0の結果となっている。25_openresult_foam2.png

そこでメニューバーの下にある1.のボタンを押していくと時間が0.1ずつ進む。 26_final_time.png

最後の時間に一気に進みたいときには2.のボタンを押すと最終時間まで飛んでくれる
また3の上下のボタンを押すと、0.1ずつ時間が進んだり、戻ったりしてくれる。

最終時間0.5の圧力分布は以下のとおりである。27_final_display.png


コンター図をやめるのには、1がsurfaceの状態で2をpからSolis colorにすればよい。28_initial_display.png
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/03(土) 13:40:11|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

Openfoamの速度分布図をparaviewで見る

次にベクトル図を出してみよう。
今回は前回の手順で圧力コンター図が出ている状態からはじめる。
まずGlyphアイコンボタンを押す。29_Glyph.png

次にPipeline BrowserにあるGlyphの目のマークをアクティブ(灰色であったら一回目の部分をクリックして黒色にする)にします。
30_Glyph-2.png
ベクトル図がコンター図の上に描かれた状態になります。
30_Glyph-3.png
次回ベクトルの成分や色の変更について考えて見ましょう。28_initial_display.png
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村

  1. 2016/12/04(日) 17:47:52|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

ベクトルに色をつける

さてベクトルに色を受ける方法だが
Pipeline BrowserでGlyph1を選んだ状態でPropertiesのcoloringでGlyphvectorを選択し、その横のボタンで色の大きさを表す成分を選択します。
色をつけたくない場合は、Solid colorを選択しておけば良いでしょう。
ちなみにボタンの下のShowボタンでレジェンド(色と数値の対応表)の表示非表示ができます。32_Glyph-4.png

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/05(月) 13:24:06|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

paraviewの表示構造

paraviewの表示の方法について。
詳しくは他のサイトでも述べられているし、マニュアルにも書かれているが
ここでは簡単に述べておく。
他のサイトやマニュアルでは
フィルターという言葉が使われているが、
要はCADのレイヤーだと思って差し支えない。
Pipelinebrowserに
result foam
glyph1
という表示があるとおもうが、resuly foamはモデル(メッシュ図や形状図)のレイヤー
Glyph1はベクトル図のレイヤー
で目のアイコンでそのレイヤーの表示非表示が切り替えられる。
またその文字を選択した状態でproperties
ウインドウから色や表示方法が設定できる仕組みになっているようだ
  1. 2016/12/06(火) 10:27:20|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

メッシュを細かくしてみよう(1)

というわけで、前回まではOpenfoamで計算した結果をparaviewというソフトで見る方法について試してみた。
paraviewは汎用のポストプロセッサーでありopenfoamに特化しているわけではない。
オープンソースでありフリーで使えるが、商用ソフトと比べて使いやすいといい難い。
というわけで、紹介したほかにも結果の数値を取り出す、流線を描く等一通りの機能はあるのではあるが、初心者にはなかなか難儀しそうなソフトである。
ポストプロセッサーは使えるソフトがあるだけましなのだが、openfoamにはフリーで使えるグラフィカルなユーザーインターフェースを備えたプリプロセッサーが付属していない。もしOpenfoamのモデル作成やメッシュ作成をグラフィカルなインターフェースで行いたいのであれば、
HyperMeshなどOpenfoamに対応している商用ソフトかsalomeやG-msh等のフリーのプリプロセッサ(代わりになるもの)をを使うかということになる。そのほかベンダーとサポート契約してOpenFoamを使う場合はそのベンダーでOpenfoamy用のプリプロセッサーやポストプロセッサーを開発している場合もあるが、基本的に有料になってしまう。DEXCSのように使えるフリーソフトをひとまとめにしたものもあるがサポートも含めて有料流体ソフトのようには簡単にある程度まで使いこなすことはなかなか難しいのが現状であると思う。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村


  1. 2016/12/07(水) 11:50:29|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

メッシュを細かくしてみよう(2)

OpenFoamと言うと商用ソルバに取って代わる流体ソルバーと知れ渡ってしまっているが、実際は流体解析ソルバー開発ツールであって、ある程度プログラムの中身がわからないと使いこなせない。
これ使って流体解析できる人だけ使ってくださいというツールなので親切なつくりになっていない。そのひとつとしてグラフィカルなプリプロセッサーがついていない(Calculixでさえcgxという使いやすいとはいえないが簡単なものがついているのだが)

ではまったくないかというと、メッシュ切りソフトはついている。ただしグラフィカルではないのでどのようなメッシュが切れたかはParaviewなど別ソフトを立ち上げて読み込んでみないとわからないのが難点でである。

2つのメッシャーがついていると思って差し支えないと思う。ひとつはブロックメッシャーと呼ばれるものもうひとつはスナッピーメッシュと呼ばれるものである。
ブロックメッシャーは名前のごとくブロック形状のものに単純格子メッシュを作るものである。
今回のcavityの例題や簡単な形状での乱流モデルの検証なんか研究課題に使う簡単な例題であればブロックメッシャーで十分である。
ブロックメッシャーで作った格子をベースに、
強引にCAD形状に合わせるのがスナッピーメッシュのようだ。
これを使えばSTLファイルなどを介して3D-CAD形状にメッシュを切って解析できるので非常に汎用性に富むが、設定パラメータは簡単でない。
筆者もチャレンジしてチュートリアルにある良く見るバイクモデルはメッシュの作成に成功したが、
独自に作成した3D-CADでのSTLもでりるでは上手くいっていない。
また、メッシュは強引に合わせるので強引に合わせたところはカットセルのような形状になるらしい。
ベンダーさんの営業なんかはOpenFoamもsnappy-meshがあるのでFluentやstar-ccm+と同様に3Dmeshが切れますよ、と普通の可をして言うけど、とんでもない話である。たぶんその会社のユーザーでだけでなく技術スタッフも難儀していることであろう。商用CAEソフトなどで作成したメッシュをOpenFoam用に変換できるツールもいくつか準備されているようだ。
ま、所詮OSSなので産業用としてはやさしいつくりにはなっていないし、製造元に文句も言えない。一部ベンダーはライセンスフリーですよ、宣伝しておいて、手に負えなくなったところで、有料コンサルに入るという手を使っているような気もするので口車には簡単に乗らないようにしよう!?(きちんとしたCAE技術者はそうだまされないと思うが、一部の管理職や一部のIT部門の人がだまされる。うちの技術者はレベルが低いのでこういうツール使ってただで流体解析できるのに、手を出さないと思ってしまっているようだ。
確かにそうとも言えるが…)
次回からはブロックメッシャーの使い方を見てみたいと思う。
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村

  1. 2016/12/08(木) 18:12:44|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

open foam メッシュをを細かくしてみる(3)

ではblock meshの使い方を見てみよう。
前にも書いたとおり、グラフィカルなインターフェースを持つメッシャーでない。
多くの流体ソフト、商用流体用プリプロッサはグラフィカルなユーザーインターフェイスをもち、
マウスのクリックでメッシュ切りや解析の設定を画面上のボタンなどで設定する仕様となっているが、Openfoamのブロックメッシャーもスナッピーメッシュもメッシュ作成ソフトはテキストファイルで設定を行い実行して、
メッシュの結果はparaviewなどのポストプロセッサーで見る仕様になっている。
この時点でざせつぢてしまった人も少なからずいると思うが、このブログではがんばってこの先進めたいと思う。
この先前に紹介したcavityの例題を例にやっていきたいと思う。
ブロックメッシュの設定ファイルはデータファイルがあるディレクトリの中のsystemと言うフォルダの中にあります。33_system1.pngその中のblockMeshDictと言うファイルを開きます。
34_system2.png
改行コードがlinux仕様であるため、windowsのメモ帳では正しく開けないので、linuxの改行コードに対応しているテキストエディッタで開くと良いでしょう。35_system3.png
次回から設定内容についてみてみましょう。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村



テーマ:CAEシミュレーション - ジャンル:学問・文化・芸術

  1. 2016/12/09(金) 07:29:12|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

blockMeshDictの中身を見てみる(1)

ということでまずはblock meshの設定だが
systemフォルダの中にある
blockMeshDict
というファイルに書かれているようだ中身を空けてみると、
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1606+ |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/

一番上は上記のようなヘッダが書かれているが、メッシュを作る上では意味がなさそう。なくても良いようである。
次に
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
これもバージョン情報とかこのファイルが何者かということが書かれている。ヘッダと言えばヘッダだがこれらは記述する必要があるようだ。

次は
convertToMeters 0.1
これは座標値の換算係数で、各座標地にこの値を書けたものが実際の座標値ということらしい。
詳しくは座標値の指定のところで説明したい。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/10(土) 11:56:26|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

blockMeshDictの中身を見てみる(2)


今回も引き続きblockMeshDictの中身を見て行きたいと思う。次の記述
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 0.1)
(1 0 0.1)
(1 1 0.1)
(0 1 0.1)
);
で節点の座標を指定している。
どうやら節点番号は指定できないようである。(ポスト自作で作るときちょっと厄介かも?)
しかし節点番号がないわけではなくて指定した順に0番、1番、2番…となるようだ。
括弧の中は(x座標、y座標、z座標)
今回の問題は以前示したようにx方向、y方向に0.1x0.1に箱であるので、(2次元問題として捉えているのでz方向には任意の大きさとなる。モデルの設定値によって結果を換算しなければならない値があるかもしれない)
節点番号2番の座標値はx、yの値が1となっているが
convertToMetersで
座標値は指定した0.1をかけてx=0.1、y=0.1となる。
同じ考え方で、入力データー上は節点番号4番以降のz座標値は0.1と書いてあるが、解析上はは0.01となる。(前にも書いた通り任意だからいくつでも良いのだが)
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/11(日) 10:06:45|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

blockMeshDictの中身を見てみる(3)

前回8つの頂点の定義をしたので、その頂点を使って立方体を定義する
blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
);
こんな感じである。
最初のblocksで3次元ブロックであることを宣言して、hexで6面体構造であることを宣言、
次に構成する節点は0番から7番であることを宣言している。
次の(20 20 1 )でメッシュの分割数を指定している。
最初の数字からx方向 y方向 z方向である。
今回の場合2次元解析を想定しているのでz方向には1分割でよい。
simpleGrading (1 1 1)はx方向、y方向、z方向のメッシュの大きさの比で今回は1:1であるようだ。
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/12(月) 10:27:20|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

blockMeshDictの中身を見てみる(4)

次に
edges
とあるが、ここでは何も指定していない。(
);
全ての辺は直線である、としたからである。
もし辺を曲線としたければ、ここでsinとかSplinとか指定して、どこの頂点からどこの頂点までの辺か、
とその曲線に必要なパラメーター(Splineであれば内挿の点の座標値)を入力する。

ここまでが、形状とメッシュ分割に関するパラメータである。
bounady以下は境界条件を記述しているが詳しくは次回以降。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/13(火) 15:32:55|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

openfoam cavity 境界条件設定

今回から境界条件の設定になる。
データでいうとblock mesh dictの中の

boundary
(
で始まる部分である。今回のモデルをおさらいすると
33boudary1
数字は定義した頂点の番号である。
0から始まることに注意する。
この箱の上面、頂点3番7番6番2番で囲まれた面は移動している。よってmovingWalと名づける(名前は、ここでは何でもよいが別ファイルで実際に速度を定義しているものと同じにしなくてはならない。
ここでは壁であるとだけ定義して、動く動かないは、別のファイルで定義している。
ちなみに流体力学では壁極近傍の流体は、壁と同じ動きをするとされているので、壁の隣(接する)?節点は壁の動きと同じ動きとなる。
movingWall
{
type wall;
faces
(
(3 7 6 2)
);


にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村


  1. 2016/12/16(金) 21:11:22|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

openfoam cavity 境界条件設定(2)

さて昨日の図で
頂点0番4番7番3番
頂点2番6番5番1番
頂点1番5番4番0番
で囲まれる3面は固定壁です。
よってファイルでは
fixedWalls
{
type wall;
faces
(
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
);
ここでも、面の名前(fixed wall)と壁ということのみ定義します。
面が動くか、固定されているかは別ファイルで定義します。
  1. 2016/12/17(土) 14:28:57|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

openfoam cavity 境界条件設定(3)

さて、残る面は
0番 3番 2番 1番で囲まれる面と
4番 5番 6番 7番)の
2面だが

これらの面、2次元解析を仮定しているモデルの
z方向の面であるが、対称条件のような境界条件になるので、
そのまま(条件なし)でよい
frontAndBackというう名前をつけて、 emptyというtypeに定義しておく。

frontAndBack
{
type empty;
faces
(
(0 3 2 1)
(4 5 6 7)
);
}
);
最後に
mergePatchPairs
であるが、
これは複数ブロックがあるとき、
接した面がある場合、それらの面の統合を指示するコマンドなので
ブロックが1個しかない今回モデルでは
特に指示しない。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/18(日) 07:13:42|
  2. CalculiX接触
  3. | トラックバック:0
  4. | コメント:0

open foam system フォルダの中のファイル

今回からsystemフォルダの中のファイルのうちblockMeshDict以外のファイルについてみてみよう
まずはcontrolDict
これは解析のコントロールを設定するファイルらしい。
何をコントロールするのか、ファイルを見てみると

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1606+ |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application icoFoam;

startFrom startTime;

startTime 0;

stopAt endTime;

endTime 0.5;

deltaT 0.005;

writeControl timeStep;

writeInterval 20;

purgeWrite 0;

writeFormat ascii;

writePrecision 6;

writeCompression off;

timeFormat general;

timePrecision 6;

runTimeModifiable true;


// ************************************************************************* //

まず
application icoFoam;
でr icoFoam;というソフトウエアを使って計算すると設定している。
前にも書いたがopenfoamは流体専用解析ソフトではなく、
流体等の計算ができるモジュールの集合体である。
今回はその中のicoFoamを使いますよと宣言しているのである。ちなみにicoFoamは非定常層流解析のモジュールである。解析方法が変われば、子のぶぬんのせっていも変わる。ひとつのソフトの中に解析の種類によって使うモジュールを切り替える、ということがぴんとこないかもしれないが
まあnastranでいうところのsol101とかsol103とか設定しているのと変わらない、とかんがえるとわかりやすいかもしれない。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/19(月) 17:59:22|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

controlDictには何が書かれているか(2)

次からが、設定本体で、みてみると、まず
startFrom startTime;

startTime 0;

stopAt endTime;

endTime 0.5;
シュミレーション内部の時間が
これらで0秒から
0.5秒までをシミュレーションすると定義している。
icoFoam
は非定常解析なので、ここで指定した
0秒から0.5秒までの移り変わりの状態をシミュレーションできる。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/20(火) 07:20:33|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

open foam system フォルダの中のファイル(2)

前回、
ontrolDict
の解説をしたが、あと
fvSchemes
fvSolution
と2つ説明してないファイルが残っている。
個人的にはマニュアル読んでよくわからなければこのファイルは触らない方がよいと思う

何が書いてあるかというと、スキームの設定とそのパラメーターである。
スキームって何だ、簡単にいうと計算方法である。
つまりどんな計算方法を使うかどんな積分方法を使うか
どんな方程式の解法を使うか、その収束条件は、等書いてある。
CFD(流体解析)は構造解析と違って、まだ多くの問題に一般的にに通用する方法というのが固まっていない部分が多いような気がする。
構造解析であれば、要素の形状により、この形状のときはこんな形状関数を使ってとか数値積分方法この方法を使っていてという風に必勝パターンのスキームがほぼ決まっていて
NastranやABAQUS、ANSYSなどの商用ソルバーも似たようなスキームを使っている。
CFDも大分一般的にに使えるスキームというのが決まってきていて、それらがFluentやSTAR-ccm+などの商用ソルバーのデフォルト値に採用されているが、
そんな商用ソルバーもよく見てみるとスキームをデフォルト以外に変更できたりするのである。
CFDのスキームはこのように研究段階であるので設定を変えやすくして研究しやすくしているのがopenfoamの特徴でもあるとのことらしい。
(逆言うと私みたいにえいや、というレベルでもいいからCFD結果がほしいという人には向かないかもしれない(笑)

というわけでこれらのファイルはCFDをある程度知っている人が設定を変えるべきであると私は思う。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/21(水) 11:00:09|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

Openfoamの境界条件、初期条件のインプット

前回までにcavity問題のモデル上の境界条件を説明したが、実際どこに入力するかはまだ説明しいない。
また、非定常解析なので、初期条件も必要である。

openfoam を非定常解析を計算するとその計算フォルダに時間ごとのフォルダが自動的に作られる。
cavityの例題の場合は「0.1」「0.2」「0.3」「0.4」「0.5」の5つのフォルダが作られる。
が、実際見てみると「0」というフォルダもある。
これは計算して作られたのではなく、
最初からあったようだ。
中を見てみると
「p」と「u」というファイルがある。
これは時間「0」の状態詰まり初期条件を表している。
時間によって変化しない境界条件もこのファイルに記述されているようだ。
「p」は圧力の条件、「u」は速度についての条件が書かれているようだ。

応力解析の場合、まず節点変位の結果を求めてそこから2次的に応力の結果を求めると多くの場合いえるが、
流体解析の場合、基本的に(これもいろいろなスキームがあるので一概に言えないが)流速と圧力1次的に同時に求めるといってよい)
そこで、圧力も流速も境界条件、初期条件が必要となる。次回からファイルの中身を見てみる。
  1. 2016/12/22(木) 10:11:21|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

open foamの圧力境界条件

では取り上げているcavity問題の境界条件定義を見てみよう。
書いてあるのは「0」フォルダの中の「p」ファイルである。
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
他のファイルと同様にバ-ジョン情報やこのファイルには圧力情報が書かれているなど、定義されている。
次に
dimensions [0 2 -2 0 0 0 0];

まずここで困ってしまった。(^^;)

圧力の単位は例えばPaつまりN/m^2

力は質量X加速度なので
kgXm/sec^2
よって圧力は例えば

kg/sec^2/m

質量を時間の2乗で割り、さらに長さで割ったもの

整理すると
質量は1乗、時間は-2乗、長さは-1乗のはずである
openfoamの書式はdimensions [質量 長さ 時間 温度 物質量 電流 光度];
であるので、
dimensions [0 2 -2 0 0 0 0];
は長さは2乗、時間は-2乗となるので
圧力を定義しているとすると全く単位系があわない。
でしばらく悩んだ末に困ったときのグーグルしてみると
どうicofoamでは圧力の単位を
圧力を密度で割った値を採用しているらしい。(それなら合う)
Openfoamの圧力はソルバーモジュールごと圧力に違う単位を採用しているようなので、各種資料やマニュアルで確認する必要がありそうだ。



ここでがんばってきた初心者嫌になってしまいますよね。。。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/23(金) 08:12:56|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

open foamの圧力境界条件(2)

systemフォルダの中の「0」ファイルの記述の解説の続きである。

圧力の初期値、境界条件値について記述してある。

internalField uniform 0;

境界以外の圧力値の初期値は0であるようだ。

boundaryField
{
movingWall
{
type zeroGradient;
}

fixedWalls
{
type zeroGradient;
}
壁のあるところは勾配0の条件のようだ。
これは初期条件だけではなく、すべての時間についてこの条件となる。

かべのところでは圧力の勾配0、とさらりと書いてある資料が多いが、
よくよく考えてみると、圧力の勾配0とはどんな意味だ?
大体勾配ってあるけどどっちの方向だ?

この条件ちょっと考えてみると奥が深い。

CFDについてやスキームの中身を知っていないと、なかなか導けない。

という筆者も、ここで簡単に説明できない。

一度CFDの簡単なプログラムを作ったことがあるのでなんとなくわかるのだが、

厳密にはOpenfoamのプログラムの中身がわかってないと

説明できないように思える…

市販のプログラムであれば壁のあるモデルを作って終わりなのだが、
(オプションで細かい設定できるものもある)
Openfoamは流体力学やプログラミングがわかってないとなかなか使えばいよ、といわれるゆえんもこんなところにある。
ちなみに勾配0の方向は壁と垂直方向だと思う。
(が私も詳しく解説できない)

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/24(土) 09:44:50|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

open foamの速度境界条件

openfoamに限らず流体解析(CFD)では圧力と速度と2つ境界条件があることが多い。
商用ソフトなどは壁があるとか対称面であるというだけで、これらの数式的な条件はソフトが自動で設定してしまうことが多いが…
よって勾配0とか指定することは少ないかも知れない。
今回は速度境界条件について説明しようと思うが、壁では壁の法線方向の速度が0になることは自明で、openfoamでも指定しない。。。速度境界条件を指定している「0」フォルダの中の「U」ファイルを見てみると、

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1606+ |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
まずはいつものヘッダである。次に単位であるが
dimensions [0 1 -1 0 0 0 0];
速度は距離(長さ)/時間なのでこれであってそうだ。
次に境界面でないところの初期値であるが、
internalField uniform (0 0 0);
xyz各方向とも0のようだ。

次に movingWallと定義した動く壁(ふたの部分)
だが全時間にわたり、x方向に1の速度で動くと定義している

boundaryField
{
movingWall
{
type fixedValue;
value uniform (1 0 0);
}

続いて動かない壁だが
fixedWalls
{
type noSlip;
noslipと定義されている。noslipとは壁と流体がslipしないで同時に動くという設定である。
これも話すと長くなるので詳しくしりたい方はcfdの参考書を見ていただくとよいと思う。
流体と壁はいったいで動くという原則に沿った定義である。
最後に2次元解析という仮定にしたので
frontandbackで定義した面は境界条件なしである。

frontAndBack
{
type empty;
}
}

// ************************************************************************* //

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/25(日) 07:59:04|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

Open foamの物性値設定

境界条件、初期条件がわかったので、次は物性値の話。
構造解析では、使う構造の材料分物性を定義しなくてはならなかったが、
流体解析も、使う流体の個数分、材料をとぃ議しなくてはならないが、2相流とか特別な場合を除き、使う流体は1種類(たいていは空気か水、たまに油)ので、物性定義もその流体1個分でよい。
構造(車、翼など)の周りの流れをシミュレーションしたい場合でも、流体だけ物性定義をすればよい。
構造は障害物物とか壁と定義されるだけで物性は関係ない。
つまり、アルミパイプの中だろうがゴムチューブだろが、血管であろうが形が同じで流れる流体も同じであればおなじ流れがおきるのが流体シミュレーションである。よって流体の物性値のみ定義しておけばよい。
もし、構造物の材料によって流れが変わる場合は境界条件やスキームを見直す必要がある
openfoamのicofoamによる例題の場合constantフォルダの中のtransportPropertiesファイルに記述してある。
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1606+ |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}いつものヘッダである。次に
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

nu [0 2 -1 0 0 0 0] 0.01;


// ************************************************************************* //
nuが0.01と定義してある。
単位系を見てみると
2つめが(長さ)^2
三つ目が(時間)^-1
となっている
これは動粘度の単位系である。
どうやらicofoamでは動粘度だけ定義しておかばよいようだ。
(他のソルバーは違うと思うが)
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/26(月) 10:05:57|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

OpenFoamの実行

さてblockmeshの形状定義、初期条件と境界条件、物性値と入力ファイルが確認できたので、実行してみよう。

まずはメッシュを切らなければならない。

blockMeshDictでメッシュを切る設定はしたが、実際メッシュを切っていない。

OpenFoamのアイコンからOpenfoamのDOS窓を立ち上げて、cdコマンドで目的のフォルダに移動してください。
その前に、一つ目の(上の方の)cavityフォルダの中に、
Allrunというファイル(中身はスクリプト)があります。
これを
./Allrun
というように実行すると、メッシュ作成からソルバーの実行まで一気にやってくれます。

一度実行したファイルを消して、初期の状態に戻したい場合は
./Allclean
とすれば初期状態に戻ります。
もちろん、メッシュ作成とソルバーの実行べつべつにおこなうこともできます。まずはメッシュ作成。
2つ目の(階層が下の方の)cavityフォルダに移動し、
blockMesh
と入力します。するとblockMeshでメッシュが作成されます。
メッシュデーター(実際の節点と要素の情報)はconnstantフォルダの下のpolymeshフォルダの中の各ファイルに書き込まれるようです。
この各ファイルの中身もプリポストの開発や、他ソルバーからのデータ変換や結果の解釈に重要なのですが、それはまた機会があれば見ていきたいと思います。
このcavityの例題はicoFoamの例題なので
icoFoamと入力すれば、ソルバーが実行できます。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/27(火) 11:50:12|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

blockメッシュでメッシュを細かくしてみる

今回から例題に少し手を加えてみよう。

まずメッシュを細かくしてみる。

blockMeshDictの設定をすこし変えればよい。
blocksコマンドを
blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
から
blocks
(
hex (0 1 2 3 4 5 6 7) (40 40 1) simpleGrading (1 1 1)
にすると
x方向y方向の分割数が20x20から40x40に変更となる。速度ベクトルの結果以下のとおり
34_40x40.png
にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村
  1. 2016/12/28(水) 13:08:50|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

blockメッシュの強みと弱み

改めて言うまでのことはないが、blockメッシュの強みと弱みについて、
強みとしては、単純形状のものなら、すばやく確実なメッシュを切ってくれる。
もちろん基本点を数点定義して、その点の間を直線(曲線も不可能でないが)で結んだような図形しかかけないが
アカデミックなCFDの検証を行うに十分でないかと思う。
tutrialの中にもblock meshで作成する例題がcavity問題以外にも結構ある。例えばpitzDailyといわれる形状もこのとおりblockmeshで定義できる。36_mesh.png
弱みとしては複雑な形状に対応してくれない。3D-CAD形状もsnappyHexMeshと組み合わせなければ作成してくれないがあるが、私個人的には、入力データの規則が細かく融通が利かない。のが弱点で、これはこあと説明するsnappyHexMeshにもいえる
例えば直方体を作りたいとき、頂点の順番を間違えるとねじれて誤った直方体がつくられてしまい、そのたびやり直しである。
商用の便利なプリプロセッサーに慣れていると、そのへんが面倒に感じられるだろう。
またエラーメッセージもわかりにくい。プログラムがある程度予測がつく人は何がまずいのかある程度予測できるが、CFD素人には難しいであろう。
  1. 2016/12/30(金) 07:58:15|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

Openfoamソルバーの話

Openfoamのソルバーであるが、たくさんある。
標準ソルバーだけでもたくさんあるが、、オープンソースなのでそれらを改造できることを考えると無限にあると考えてよい。

流体関連はもちろん、熱伝導や多分有限体積法であるが固体の応力計算できるものまである。

詳細はググれば、たくさんの人が詳しく説明しているので、そちらを参照した方がよい。

多くの人は流体計算のため使うのであろうが、流体関連もスキームの違いによりモジュールがたくさんある。

問題は、それで結局何使えばよいのか、ということであるが、
他の商用ソルバーのデフォルト(kーεによる定常乱流解析)に近いものはRANSで定常問題解くというsimpleFoamであろうか。
厄介なのはモデルの形状、条件、物性によってとくソルバー、つまりスキームが変わってくると使うソルバーの種類も変わってしまうということである。

また、スキーム(ソルバー)が変わると、使う境界条件や初期条件も変わってくるのである。

メッシュもこのソルバーではうまくいったけど。こっちのソルバーげは計算できないということも出てくる。

どのソルバー使うのが最適なのかは、流体力学の知識はもちろん計算流体力学(CFD)の知識も必要であろう。

少なくても圧縮性流体と非圧縮性流体の違い、ニュートン流体と非ニュートン流体の違いぐらい知らないと、苦しいかもしれない。
  1. 2016/12/31(土) 10:53:10|
  2. openfoam
  3. | トラックバック:0
  4. | コメント:0

プロフィール

tsunodako

Author:tsunodako
tsunodakoのプロフィール
無料でCAE環境を構築に挑戦中。
が、現在少し休止中。そのうち復活します。
ご意見ご感想をブログコメント大歓迎です!!!
メールの場合は下のほうにあるフォームに入力していただくか

tsunodako[at]yahoo.co.jpまで([at]=@に変換してください)。
このブログにあるソフトやデータを使用して生じた結果は責任負いませんのであしからず。
静解析CAE技術者のための動解析講座は http://vibrationcae.blog.fc2.com/ に移動いたしましたのでよろしく。

ブログ内検索

カレンダー(月別)

11 ≪│2016/12│≫ 01
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近の記事

カテゴリー

tsunodakoへのメールはここからでもOK

名前:
メール:
件名:
本文:

最近のコメント

最近のトラックバック

フリーエリア

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。