熱伝達の境界条件 (OF-2.1 OF-2.3) 1/7 藤井 15/01/30 熱伝達の境界条件 (OF-2.1 OF-2.3) 目次 1. はじめに 2. 熱伝達の境界条件 (fixedalphatemp) の作成 2-1. 考え方 2-2. fixedalphatemp の作成 3. 作動確認

Similar documents
アンデン株式会社第 1 技術部 DE 開発藤井成樹 < 業務内容 > アンデンとして CAE 解析を強化するために 10/1 月に DE(Degital Engineering) 開発が 5 名で発足 CAE 開発 活用が目的 解析内容は 構造解析 ( 動解析 非線形含む ) 電場 磁場 音場 熱流

Text

Microsoft PowerPoint - 第7章(自然対流熱伝達 )_H27.ppt [互換モード]

Salome-Mecaを使用した メッシュ生成(非構造格子)

CW単品静解析基礎

Microsoft PowerPoint OpenFOAMの使い方(柴田).ppt [互換モード]

1. TreeFoam概要 TreeFoamをベースにして ここから各種操作ができる 特に OpenFOAMの基本操作になる case作成 境界条件設定 メッシュ作成 の概要について説明 内容 1) TreeFoamのメニュー case作成 コピー 2) grideditor概要 境界条件の設定 確

2012/4/28 OpenCAE 初心者勉強会東海 1 twoliquidmixingdymfoam を用いた タンクでの塩水混合解析 ( その 1) TM

swak4Foamを使って見ました.odp

パソコンシミュレータの現状

netu_pptx

OpenFOAM 掲示版のまとめ 2012/12/01 富山県立大学中川慎二

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

伝熱学課題

2014 年 10 月 2 日 本日の講義及び演習 数値シミュレーション 2014 年度第 2 回 偏微分方程式の偏微分項をコンピュータで扱えるようにする 離散化 ( 差分化 ) テイラー展開の利用 1 階微分項に対する差分式 2 階微分項に対する差分式 1 次元熱伝導方程式に適用して差分式を導出

1/11 SalomeMeca による構造解析 ( 線形 非線形 ) の紹介 1. 自己紹介 2. SalomeMeca の概要 3. SalomeMeca でできること ( 確認した項目 ) 4. 具体的実施例の紹介 5. 解析結果 ( 非線形 動解析 ) の事例 6. まとめ 7. 付録 (Co

OpenFAOM合同勉強会【関西】

OpenFOAM_compile_basic 1 / /12/23 12: 年 12 月 13 日オープン CAE 富山 ( 富山県立大学中川慎二 ) Disclaimer OPENFOAM is a registered trade mark

Microsoft Word - Training10_プリプロセッサ.docx

有限要素法法による弾弾性変形解析 (Gmsh+Calculix)) 海洋エネルギギー研究センター今井 問題断面が1mmx1mm 長さ 20mmm の鋼の一端端を固定 他他端に点荷重重をかけた場場合の先端変変位および最大応力を求求める P Equation Chapter 1 Section 1 l

슬라이드 1

<4D F736F F F696E74202D2091E6328FCD E9F8CB392E88FED944D936093B1298D758B F E291E892C789C1292E B8CDD8

Microsoft Word - 第5章.doc

Microsoft Word - CombB-Ex

FEM原理講座 (サンプルテキスト)

Code_Aster / Salome-Meca 中級者への道 2015年5月31日

構造解析マニュアル@RDstr

Slide 1

2018/9/23 for DEXCS2018 DEXCSランチャーの使い方 1

30

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

COMSOL Multiphysics®Ver.5.3 パイプ流れイントロダクション

memo

7th CodeGear Developer Camp

伝熱学課題

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

memo

Taro-最大値探索法の開発(公開版

2/ メッシュ作成 メッシュの作成は 基本編で使った自動メッシュ (Automatic Length 0.1( クリック 1 回分 ) の 1 次メッシュ ) で作成した 2. ここで 色々な境界条件を設定して 確認する 最初に ウィザードを使って デフォルトの面圧の境界条件を設定し 設

PowerPoint Presentation

ParallelCalculationSeminar_imano.key

Taro-2分探索木Ⅰ(公開版).jtd

memo

Prog2_12th


CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

PowerPoint プレゼンテーション

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

ガイダンス

プログラミングA

Microsystem Integration & Packaging Laboratory

[ B ].indd

位相最適化?

とても使いやすい Boost の serialization

7 章問題解答 7-1 予習 1. 長方形断面であるため, 断面積 A と潤辺 S は, 水深 h, 水路幅 B を用い以下で表される A = Bh, S = B + 2h 径深 R の算定式に代入すると以下のようになる A Bh h R = = = S B + 2 h 1+ 2( h B) 分母の

memo

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

Microsoft PowerPoint - 熱力学Ⅱ2FreeEnergy2012HP.ppt [互換モード]

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

文法と言語 ー文脈自由文法とLR構文解析2ー

Prog1_10th

Microsoft Word - t30_西_修正__ doc

OpenCAE勉強会 公開用_pptx

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft Word - HOBO雨量専用説明書_v1.1.doc

slide5.pptx

例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (

FFT

再起動した状態になり パスワードを入力すると 図 2 のように DEXCS2011 のアイコ ンがデスクトップ上に表示される 2 端末を準備する メニューバーにある端末の形を左クリック 図 2 デスクトップ メニューバーに端末の形がない場合 図 3 メニューバー アプリケーション アクセサリー 端末

Taro-2分探索木Ⅱ(公開版).jtd

プログラミング実習I

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

旭硝子のリグラスカタログ

C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i<=10; i++) sum=sum + i; printf ("sum=%d n",sum); 2

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

計算機シミュレーション

PowerPoint プレゼンテーション


スライド 1

Microsoft Word - NumericalComputation.docx


<4D F736F F D2097CD8A7793FC96E582BD82ED82DD8A E6318FCD2E646F63>

Microsoft Word - 【第5分科会】ConcolicTestingグループ_付録_修正_ doc

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

2018/9/19 for DEXCS2018 DEXCS for OpenFOAM における 推奨メッシュ生成法 オープンCAEコンサルタント OCSE^2 代表 野村悦治 1 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD L

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

スライド タイトルなし

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

<4D F736F F F696E74202D2091E F182E082CC82C382AD82E88E CA48B8689EF C835B83938E9197BF292E B8CDD8AB B83685D>

file:///D|/C言語の擬似クラス.txt

理解のための教材開発と授業 (宮内).PDF

解析力学B - 第11回: 正準変換

プログラミング入門1

gengo1-2

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Taro-リストⅢ(公開版).jtd

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Transcription:

1/7 藤井 15/01/30 目次 1. はじめに 2. 熱伝達の境界条件 (fixedalphatemp) の作成 2-1. 考え方 2-2. fixedalphatemp の作成 3. 作動確認 3-1. モデルの作成 3-2. solver 3-3. 境界条件 3-4. 計算結果の確認 4. 計算結果の検証 5. まとめ 1. はじめに 現在 OpenFOAM で laplacianfoam を使って 熱伝導の計算ができる状態にあるが これは熱伝導のみで熱伝達の計算ができない状態にある 商用の構造解析ソフトで熱伝導を計算しようとした場合 熱伝達の計算ができる この為 OpenFOAM 側でも熱伝達の計算ができる様に この境界条件を作成してみる 2. 熱伝達の境界条件 (fixedalphatemp) の作成 2-1. 考え方 熱伝達は 固体表面とその固体周りの流体側との熱移動を計算する その流体側に熱移動する熱量は 下式で表される q=α(t T ref ) q 熱流束 (W/m2) α 熱伝達率 (W/m2.K) T 固体表面温度 (K) Tref 流体側の温度 (K) また 固体側の熱伝導は 下式で表される q= λ T q 熱流速 (W/m2) λ 熱伝導率 (W/m.K) T 固体温度 (K) OpenFOAM は 温度を変数として 温度の方程式を解いている為 熱伝達を計算する為には 固体表面から温度差に応じた熱量を加減算死求める事になる この計算をする為には 固体表面に固体の温度勾配 ( T) を設定する事で求める事ができる 以上の理由により 上式を変形して 下式で計算する事になる q= λ T =α(t T ref ) T= α λ ( T ref T )

2/7 上式で算出した温度勾配を境界条件として設定すれば 計算できる事になる この温度勾配を計算する為に 境界条件の入力フォーマットとして 以下の内容で値を入力し 温度勾配を計算できるものを作成してみる type fixedalphatemp; //patchtype reftemp 300; // 参照温度 ( 雰囲気温度 ) alphah 250; // 熱伝達係数 KField_or_KValue KField; // 熱伝導率 λ を field で読むか値で読むかを決定 KField lambda; //field で読む場合の field 名 KValue 30; // 値で読む場合の値 gradient uniform 0; // 温度勾配 Field の定義 value uniform 300; // 温度の初期値 2-2. fixedalphatemp の作成 OpenFOAM に標準で備わっている境界条件 fixedgradient を改造して新しい境界条件 fixedalphatemp を作成する 元々のソースコード $WM_PROJECT_DIR/finiteVolume/fields/fvPatchFields/basic/fixedGradient を $WM_PROJECT_USER_DIR/applications/libraries/myBCs/ にフォルダ毎コピーする コピー後 FOAM 端末上から以下を入力して ファイル名と境界条件名を一括変換する $ cd $WM_PROJECT_USER_DIR/applications/libraries/myBCs/fixedGradient $ rename 's/fixedgradientfvpatchfield/fixedalphatempfvpatchscalarfield/g' */* $ sed -i 's/fixedgradientfvpatchfield/fixedalphatempfvpatchscalarfield/g' */* オリジナルの fixedgradient は field の型が scalar vector 等どの型でも使う事ができるが 今回の場合 熱伝達の計算のため field の型を scalar に固定している この方法は 修正箇所が増えるが field 間の演算が楽になる 修正方法は 基本的に以下で修正し コンパイルが通る事を確認しておく (1) template 文は全て削除 (2) public fvpatchfield<type> public fixedgradientfvpatchscalarfield この変更により 全ての fvpatchfield<type> が fixedgradientfvpatchscalarfield に変わることになる ただし tmp<fvpatchfield<type> > 部は tmp<fvpatchscalarfield> に変える (3) TypeName("fixedGradient") TypeName("fixedAlphaTemp") この変更により 境界条件名が fixedalphatemp に変わる (4) Type scalar に変更この変更により field の型が scalar に固定される (5) ***.H ファイルに include を追加 #include "fixedgradientfvpatchfields.h" (6) ***.C ファイルに include を追加 #include "addtoruntimeselectiontable.h" #include "fvpatchfieldmapper.h" #include "volfields.h" (7) ***.H ファイルの最後の行をコメントアウト //#ifdef NoRepository //# include "fixedheattransferfvpatchscalarfield.c" //#endif (8) ***.C ファイルに境界条件を db に登録する手続きを追加 コンパイルする為の Make フォルダ内の files と options ファイルの内容は以下で設定して コンパイルする ----------------files の内容 ----------------------------

3/7./fixedAlphaTempFvPatchScalarField.C // コンパイルの対象 LIB = $(FOAM_USER_LIBBIN)/libFixedAlphaTemp // ライブラリ名 -------------------------------------------------------- --------------options の内容 ------------------------------ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ -lopenfoam \ -ltrisurface \ -lmeshtools ---------------------------------------------------------- コンパイルが通る事を確認した上で fixedaplphatemp.h fixedalphatemp.c ファイルに以下の修正を加える ( ここでは 代表的な部分のみ記載 詳細は ソースコードを参照 ) ----------------------fixedalphatemp.h------------------------------------- // Evaluation functions // 追加 ---------------------------------- //- Update the coefficients associated whith the patch field virtual void updatecoeffs(); //-------------------------------------- //- Return gradient at boundary //virtual tmp<field<type> > sngrad() const virtual tmp<field<scalar> > sngrad() const return gradient_; ----------------------------------------------------------------------------- ------------------fixedalphatemp.c( 処理部を追加 )----------------------------- // 追加 -------------------------------------- void FoamfixedAlphaTempFvPatchScalarFieldupdateCoeffs() if (this->updated()) return; // 変数定義 Field<scalar> flowheat; //Field<scalar> intvalue = this->patchinternalfield(); const fvpatchfield<scalar>& patchvalue = *this; if (KName_or_KValue_ == "KField") // T の境界条件に lambda field の値を読んで設定する為 // solver 側の createfield で field を定義する順番は 先に lambda その後に T を定義する // lambda と T の定義する順番を間違えると region0 内に lambdafield が無い のエラーが

4/7 // solver 実行時に発生する const fvpatchfield<scalar>& lamp = patch().lookuppatchfield<volscalarfield, scalar>(kname_); //flowheat = (reftemp_ - intvalue) * alphah_ / lamp; flowheat = (reftemp_ - patchvalue) * alphah_ / lamp; else // 熱伝導率を値で取得する場合 //flowheat = (reftemp_ - intvalue) * alphah_ / KValue_; flowheat = (reftemp_ - patchvalue) * alphah_ / KValue_; gradient_ = flowheat; fixedgradientfvpatchscalarfieldupdatecoeffs(); //------------------------------------------ //template<class Type> void FoamfixedAlphaTempFvPatchScalarFieldevaluate(const PstreamcommsTypes) if (!this->updated()) this->updatecoeffs(); ------------------------------------------------------------------------------------------ 3. 作動確認 境界条件 fixedalphatenp を作成する事ができたので ここで作動確認してみる 3-1. モデルの作成 モデルは 単純に一次元で計算できる様に丸棒 (Φ40 200mm) とし モデル全体に初期値を与え 丸棒の片側の端面に熱伝達率を設定し それ以外の面は zerogradient として熱の出入りがない状態で確認する

5/7 inw SideWall ( Φ40 200mm ) outw メッシュは 要素サイズ 5mm でメッシュを切っている 3-2. solver 使用する solver は laplacianfoam で計算する 3-3. 境界条件境界条件は 以下で設定した patch 名 T ---------------------------------- internalfield 400 inw zerogradient outw fixedalphatemp sidewall zerogradient fixedalphatemp の内容は以下で設定している type fixedalphatemp; reftemp 300; ahphah 250; KField_or_KValue KValue; KField lambda; KValue 52.8; gradient uniform 0; value uniform 300; // 雰囲気温度 // 熱伝達率 //KValue データで計算 3-4. 計算結果の確認

6/7 10 秒間隔で 100 秒まで計算させた 100 秒後の結果が下図になる 100 秒後の outw 端面側の cell の温度が 383K まで下がっている事になる 100 秒後で outw の端面に設定されている温度勾配は 395K/m が設定されていた 4. 計算結果の検証 同じモデルを同条件で ANSYS で解析してみる この結果が 以下になる 熱伝達面の最低温度が 382.63K であり 誤差は 1K 以下に収まった ANSYS の場合は メッシュサイズ 5mm で OpenFOAM と同じだが 2 次メッシュで計算しているので OpenFOAM 側でその半分のメッシュサイズ (2.5mm) でメッシュを切り 結果を確認すると 誤差は 0.4K まで縮まっている ANSYS は有限要素法 OpenFOAM は有限体積法で解法の差がある為 誤差は生じてくる 有限要素法 節点の値を求める有限体積法 要素中心の値を要素に流れこむ flux から求める

7/7 5. まとめ 今回 ANSYS で行う熱伝達解析を OpenFOAM で置き換える為には OpenFOAM には無い熱伝達の境界条件を作成する必要があったが これが作成でき誤差も少ない事が判った為 OpenFOAM に置き換える事ができる 現在の境界条件は 以下が存在するので これを組み合わせて熱解析を行うことになる これらの境界条件を温度 T field に設定する事になる 熱伝達 fixedalphatemp で熱伝達率を固定熱流束固定 fixedgradient で温度勾配を固定 ( 熱流束 q = T/λ で与える ) 温度固定 fixedvalue で温度固定熱絶縁 zerogradient で熱的に絶縁する