2次元非定常熱伝導方程式を数値的に解くC言語プログラム
熱伝導方程式の説明とか(pdf)

ファイル群 Ver.2(2004.10/4,16:30修正)(zipで圧縮,6[kB])

ファイル群 Ver.1(zipで圧縮)

変更点など
Ver.1 >> Ver.2
  • 熱量発生の計算に,格子間隔(格子面積)と時間間隔を考慮してなかったのを修正
  • (時間格子点の数+1)回分の計算をするように変更(このことにより,"ht=0.1,Nt=100"の時,"t=10.0"の出力も得る)
  • 計算条件などの設定は基本的に設定ファイル(joken.h)で定義,一部の関数もこちらに移した
  • デフォルトでのファイル出力位置の変更
  • Ver.1の本体,設定ファイルとは混在させないほうが無難(ファイル名に"2"をつけたやつ以外は混在しても問題ないハズだけど)

    ファイルの説明らしきもの(Ver.2で多少ファイル名が変わった部分あり)
    プログラム本体
    custom-exp.c 陽解法(Explicit method)を用いて数値解析を行なう
    custom-imp.c 完全陰解法(Implicit method)を用いて数値解析を行なう
    custom-crank.c クランク−ニコルソンの陰解法(Crank-Nicolson method)を用いて数値解析を行なう

    外部ファイル
    joken.h 数値計算を行なう為のパラメータ設定
    gauss.h 陰解法を用いる際に必要となる行列計算をガウスの消去法で計算するための関数
    (恐ろしく効率が悪いので格子点を多くすると計算時間が気にかかる)
    shoki.h 全ての格子点に初期温度300[K]を設定
    (shoki-smooth.h) 全ての格子点に,単一温度ではないが連続となる初期温度を設定
    generation.h 時刻0[s]にのみ,格子点(0,0)に1000[W]を投入
    (generation0.h) 全ての時刻,全ての格子点において熱の発生なし

    <<使い方>>
  • プログラム,必要な外部ファイルを同じディレクトリにおく。
  • プログラム本体をエディタで開き,出力ファイル名を設定する(define FILENAME 〜 の行)
  • 出力ファイル用のディレクトリは作っておくほうが良い(ディレクトリがないとエラーになるかも)
  • shoki.hの設定をする
    Nt : 時間刻みの数
    Nd,Ns : 深さ方向(depth),表面方向(surface)の格子数
    ht : 時間刻みの幅[s]
    hd,hs : 格子の幅[mm]
    a : 熱拡散率[mm^2/s](Ver.1)
    rho : 密度[g/mm^3](Ver.2)
    cp : 比熱[J/g K](Ver.2)
    lambda : 熱伝導率[W/mm K](Ver.2)

    includeの部分 : 設定ファイルを指定
  • 必要に応じてshoki.h,generation.hを設定
  • コンパイルして実行
    <<とりあえず分かっている不具合>>
    generation.h(熱量発生)
    格子間隔(格子の面積)を考慮してない為,格子間隔や時間刻みを変更した際には定義しなおさないと同じ条件にならない。
    (例えば格子間隔を1/2(格子面積1/4)にしたとき,同じエネルギーを1/4の面積に投入したことになる)
    プログラム本体で使用する際の係数が怪しい
    →改良予定(Ver.2で修正済)

    もし熱発生(投入)を考慮せず熱拡散だけを解析するなら,generation0.hを使用しshoki.hで初期温度を直接設定するほうがよいと思います。

    gauss.h(行列計算用)
    この解析で使う行列はほとんどの行列成分が0となるので,ガウスの消去法よりも効率的な計算方法があります。(3項方程式的なもの,今回は5項で要素はかたまっていない)
    また熱拡散係数が時間的に変化しないなら,毎時間ごとに行列計算する必要はありません。
    →自分の今後の解析には陽解法を用いることにした為,行列計算は必要なく,gauss.hに改良を加えるつもりは(今のところ)ありません

    ご意見などありましたらメール,掲示板などからお願いします。
    なおプログラムのコンパイル(&実行)は,gcc(WindowsXP上Cygwin)で確認しています。

    | フレーム | | TOP |

    Copyright (C) 2004-2008 チャーリー, All rights reserved.
    [Whisper of Wind]
    04.10/04 16:31 更新