0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

heatrapyで1.5次元非定常伝熱解析をやってみる

Last updated at Posted at 2020-03-10

opensourceのheatrapyを使用して一次元非定常伝熱解析をやってみました。
最近、仕事で熱関係をやっています。

環境構築

pip install heatrapy

やれること

以下の事が出来ます。かなり色々できますね!

  • 非定常
  • 材料の温度依存性
  • 材料を任意で追加可能
  • コンポーネント間の接触
  • 境界条件は、温度指定か断熱条件
  • 任意の位置での系外への熱移動(入熱、出熱)← 熱伝達率や輻射での熱の出入りを設定可能

####【モデル】

  • Ta,insulations :境界条件
  • Q : 熱の授受(任意の位置で可能)
  • h : 接触条件(任意の位置で可能)
  • Q0 : 温度に依存する熱の授受(任意の位置で可能)

image.png

論文

理論的なものは下記論文にまとまってます。ありがたや
https://www.sciencedirect.com/science/article/pii/S2352711018301298#!

1コンポーネントの一次元非定常熱解析

ドキュメントにある例です。

image.png

【解析条件】

  • コンポーネントの長さ:0.5m
  • 材料(materials):Gd(ガドリニウム)
  • 初期条件(amb_temperature):293K
  • 境界条件(boundaries):左側は温度条件(300K)で、右側は断熱(0で断熱条件)
  • 時間ステップ(dt):1秒(ここの設定を間違うと、変になるので注意!←伝熱速度の関係です)
  • 分割数(borders):10分割
  • 空間ステップ(dx):0.05m(コンポーネント長さ/分割数 = 0.5/10 = 0.05m)
  • 時間(timeInterval):30000s

【材料】

材料データは、インストールフォルダ/heatrapy/database の中にあります。ここに追加していけば、材料の追加が可能です。
材料フォルダ内の各ファイル名は、下記の物性値を意味しており、値は温度依存を入れる事ができます。

  • cp:比熱[J/kg ℃]
  • k:熱伝導率[W/m K]
  • rho:密度[kg/m3]

####【実行】
ドキュメントのまま、動かそうとしても動きません。。。(メンテしてないのだろうなぁ)
そこで、ソースコードを見て、修正しました。

下記コードを実行すると、example.txtに解析結果が出力されます。write_intervalは何秒毎に結果を出力するかの指定です。
solverは4つ用意されていて、適宜選択するようです。

run.py
import heatrapy as ht

example = ht.single_object(amb_temperature=293, materials=('Gd',), borders=(1,11),materials_order=(0,),
                            dx=0.05, dt=1., file_name='example.txt',boundaries=(300,0), Q=[], Q0=[],initial_state=False)

example.compute(timeInterval=30000, write_interval=300, solver='implicit_k(x)')

####【結果の可視化】
ドキュメントには、physplotlibで結果を見るとありますが、pandasを使って結果を見ていきます。

read_data.py
df = pd.read_csv("example.txt")

上記で出力ファイルを読み込みます。下記のように、各節点での温度が時刻歴で出力されます。

image.png

グラフで見てみましょう

graph.py
df = pd.read_csv("example.txt")
df=df.drop("heat[1](W)", axis=1)
df=df.drop("heat[-2](J)", axis=1)
df = df.set_index("time(s)")
df.plot(figsize=(15,8))

image.png

ザ、一次元非定常熱解析のグラフですね!

感想

なかなかに素晴らしいライブラリです。論文にもあるように、熱解析とオブジェクト指向プログラムは大変相性がよいです!
こういうライブラリが増えてくれると、製造業でも”車輪の再発明”しなくて済むのですが、それは未だ先の話。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?