Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++RAD Studio

C++Builderで剛体熱伝導方程式を学ぶ

pexels dave morgan 2643596

この記事は、Yılmaz Yörü氏のhttps://blogs.embarcadero.com/learn-rigid-body-heat-transfer-equations-with-c-builder/の抄訳です

熱力学は、私たちが取り組んでいる工学分野の1つであり、実験室 または 製造プロセスで測定されたさまざまな熱力学量と物理的特性に関連する熱力学方程式の数学的フレームワークによって表現されます。これは、熱、仕事、温度、およびそれらとエネルギー、放射線、および物質の物理的特性との関係を扱う物理学の1分野です。 熱力学システムは、4つの熱力学の法則に基づいて分析されます。

熱力学の法則とは?

第0法則:2つの系(system)がともに第3の系と熱平衡している場合、それらは互いに熱平衡していることになる。

第1法則:孤立系の総エネルギーは一定であり、エネルギーはある形から別の形へと変化することはできるが、生成も破壊もできない。

第2法則:孤立系のエントロピーは常に増加する。

第3法則:系のエントロピーは、温度が近づくと一定値になる。言い換えれば、系のエントロピーは、その温度が絶対零度に近づくにつれて一定値に近づく。

熱伝導とは?

熱伝達は、熱工学の1分野であり、物理的なシステム間での熱エネルギー(熱)の生成、利用、変換、交換に関するものです。自動車、エンジン、ブレーキシステム、コンピュータ、グラフィックカード、モデム、メインボード、CPUやGPUの設計など、あらゆる機械の動作には必ず熱伝導が関係していますが、製品の設計プロセスでは熱伝達はほとんど無視されます。

熱力学の観点からすべてを正しく分析を行わないと

  • 熱のために燃料フィルターが動かなくなる
  • エンジンが効率的に動作しなくなる
  • モデムがコンデンサーなどの回路の高温で切断される
  • CPUやGPUがオーバーロックできない

といった効率よく動作しないという様々な問題が発生する可能性が懸念されます。これらは、加熱または冷却にまつわる多くの問題のほんの一例に過ぎません。

C++による有限差分法のアルゴリズム

熱力学以外の他の分野では、加熱とは関係ないものもありますが、例えば、風力発電機は運動エネルギーとその方程式による産物で、気象条件(気温、気圧)も翼にかかる空気の圧力、ブレーキシステム、発電機、電子システムなどすべて熱伝導にさらされています。そこで、このブログでは、このような系の本体を有限差分法で分析するC++の例を示すことで、製品をより効率的に設計するための具体的なアプリの開発に役立つのではないかと考えています。

3次元オブジェクトがxyz直交座標系にある場合、熱伝導方程式は以下のように記述することができます。

ht1 4775981 2

ここで、Tはx,y,z直交座標系におけるその点(ノード)の温度であり、dT/dtはノード間の温度変化を示しています。kは熱伝導率、roは剛体の密度、Cvは熱容量の項、および一定の体積の中で物質の単位質量あたりに吸収または放出されるエネルギーの量です。ここでは、中央のノードをP、東、西、北、南のノードをE、W、N、Sで表し、下、上のノードをB、Tで表しています。

したがって、この方程式は以下のような有限差分方程式として記述できます。

ht2 1148917 2

これは

ht3 5752901 2

以下のように’a’を使用してこれらの定数係数を単純化できます。

ht4 4574705 2

上記の式は、内部のすべてのノードで正しく、2つの異なる材料(銅とアルミニウム)に対してカスタマイズすることができます。境界条件には、外部ノードのニーズを採用する必要があります。たとえば、銅の剛体から空気まで、すべての外部ノードに境界条件を追加する必要があります。外側の面は孤立していますか?他の材料に伝導されているか、または空気からの対流があるか、空気や他のガスに対流がありますか?

境界条件

境界条件と、その境界条件による方程式の定義も非常に重要です。この種の方程式を解くには、各ノードについてこの式を確認する必要があります。今回の例では、空気中のこの剛体の3次元オブジェクト(すなわちオブジェクトと空気の間に熱伝達がある)と仮定します。このように、コーナーや空気と接するエッジ、ノード内部の他のノードでの熱伝達は異なるため、この剛体と空気の間の熱伝達も考慮する必要があります。したがって、これらの境界ノードでは、以下の式を使用することができます。

kht 6456576 2

この式では、左辺が温度Tノード(コーナー、エッジ、または平面)での伝導および対流熱伝達、右辺が空気からの対流熱伝達で、ここでの不定形温度は一定とみなせる環境温度を示しています。

暗関数

この2つの式をすべてのノードについて一緒に考えると、これは陰伏方程式によって定義される暗関数であり、関数の値と見なされる変数の1つを、引数と見なされる他の変数に関連付けます。これらの陰伏方程式は、反復法を用いて解くことができます。最もポピュラーな方程式の一つがSOR(Successive Over Relaxation Iteration)反復法です。この方法は、1次元、2次元、3次元の問題を解決するために使用できます。数値線形代数では、SOR(Successive Over-Relaxation)反復法(以下、SOR反復法)は、線形連立方程式を解くためのガウス=ザイデル法の一種で、収束が速くなります。同様の方法は、ゆっくりと収束する反復プロセスにも用いることができます。

これは3次元の問題で、ご覧のとおり、7個のパラメータがあり、7個の対角行列形式になります。別のブログ「C++コードによる数百万もの未知数の方程式を解く方法を紹介!」で3、5、7個の対角行列形式を計算でき、何百万もの未知数の方程式をSOR反復法で解くことができることを紹介しています。

行列形式の方程式

行列形式の簡単な方程式は、以下のように記述できます。

muq 5539411 2

この方程式では、

  • Mは2次元の行列 (2本の横棒は2次元の行列であることを示す)
  • Uは各ノードからの未知のパラメータの1次元行列形式
  • qは式の右辺の1次元行列形式

7つの対角線上にあるM行列、U行列、q行列は、以下のように示されます。

7diag 9714544 2

ここで、A,B,C,D,E,F,H,Iは、それぞれ方程式の下、南、左、中央、右、北、上のパラメータです。このM行列の行は、すべての行列形式を保持するために以下のコード例のような構造体を持たせています。

C++でのSOR法の改訂版の使用例

この最終的な方程式は、C++のSOR法の改訂版で以下のように解くことができます。

下図は、この方程式がアプリケーションでどのように機能するかを示す古いバージョンのC++Builderで作成した例です。

cubicht 1849096 2

SOR法の改訂版のどこが素晴らしいのでしょうか?

このSOR法の修正版は、ほとんどの対流問題や伝導問題の線形方程式に使用することができます。SORの反復法については、別のブログ「C++コードによる数百万もの未知数の方程式を解く方法を紹介!」で3、5、7個の対角行列形式を計算でき、何百万もの未知数の方程式をSOR反復法で解くことができることを紹介しています。放射伝熱もありますが、低温では無視できることに注意してください。高温の場合は、これも考慮する必要があります。


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES