水曜は眠いわ:熱伝導解析終了!

  • このエントリーをはてなブックマークに追加
  • LINEで送る

朝眠いながらもなんとか起きて学校へ。ツナギを置いておく場所がほしいなあ。

1・2限は加工実習。今日も3時間立っているだけなので暇でしょうがない。旋盤で軸の大きいほうを加工しているのだけれど、旋盤を動かすのは一人だし、径とか記録するのも一人でいいし、やったことと言えばマイクロメータでたまに径とかを測っただけ。なのでひたすらストレッチとかしていた。暇だ。

昼はおにぎりを食べて、プログラムを印刷してきた。まだ途中なので授業中に紙の上でプログラムを書こうと思って。最近学食を全く使わない。それはお金がないから。

3限は燃焼工学。いつも暇でしょうがない授業なので、プログラムでも書いていようと思っていた。内容はNS方程式とかエネルギ式とかをいじっていた気がする。後はエンジンの乱流がどうこうって言ってたなあ。途中で当てられたとき、「○○研の彼」(○○はタカフの研究室)とか言われて俺じゃないなと思ってたら俺だったらしい。どうして先生はそんな間違いをしたのやら。

空き時間にもプログラムをする。半径方向熱伝導なので一次精度風上差分+拡散方程式の差分なのだけれど、ここでのCFL条件は拡散の式が利いてくる気がするので、時間ステップと空間ステップと熱伝導率に注意しなければならないなと思う。

5限は航空構造力学。今日はなんかこの前とかと雰囲気が変わって、曲面の方程式をやるとか言っていて、話が数学的になっていた。曲率半径とかそんなこと言っていたなと思うけれど、最後のほうがちょっと聞いていなかったら分からなくなってので諦めた。どこかでfollowしないとなあ。

家に帰り、ご飯を食べて少ししたら寝てしまった。そして起きてまたプログラムを始める。考えつつ打っていたらプログラム自体は完成して、実行できるようになったのだけれど、実行してみるとめっちゃ時間がかかる。目安がないと計算時間が1分なのか1時間なのか1日なのか分からないので%表示をしてみた。それからコードもさらしておこう。CFL条件が満たされているのか激しく不安。

と思っていたけれどやっぱこんなに遅いのはプログラムのミスっぽい。またデバッグの繰り返しかあ。色々おかしいところがあって今も直してて大変だわ。

実行画面。パソコンの性能が如実に速度に出るんだと思う。CeleronD340(2.93GHz)の限界。

References   [ + ]

1. <span class="synConstant">1.0</span><span class="synStatement">+</span><span class="synConstant">0.4</span><span class="synStatement">/</span><span class="synConstant">1.4</span><span class="synStatement">*</span>(x<span class="synStatement">**</span><span class="synConstant">2.0</span>
2. <span class="synConstant">0.5</span><span class="synStatement">*</span>y<span class="synStatement">/</span>t0<span class="synStatement">*</span>(<span class="synConstant">1.0</span><span class="synStatement">+</span><span class="synConstant">0.4</span><span class="synStatement">/</span><span class="synConstant">1.4</span><span class="synStatement">*</span>(x<span class="synStatement">**</span><span class="synConstant">2.0</span>
3. <span class="synConstant">0.428319</span><span class="synStatement">/</span>x)<span class="synStatement">**</span><span class="synConstant">0.8</span>) <span class="synComment">c hg1のxは等価直径 </span> hg1(x)<span class="synStatement">=</span>(<span class="synConstant">0.026</span><span class="synStatement">/</span>x<span class="synStatement">**</span><span class="synConstant">0.2</span>)<span class="synStatement">*</span>((u<span class="synStatement">**</span><span class="synConstant">0.2</span>)<span class="synStatement">*</span>cp<span class="synStatement">/</span>(pr<span class="synStatement">**</span><span class="synConstant">0.6</span>
4. u<span class="synStatement">**</span><span class="synConstant">0.2</span>)<span class="synStatement">*</span>cp<span class="synStatement">/</span>(pr<span class="synStatement">**</span><span class="synConstant">0.6</span> <span class="synComment">c 熱伝導率の係数k2 </span> k2(x)<span class="synStatement">=</span>k_heat02<span class="synStatement">*</span>dt<span class="synStatement">/</span>x<span class="synStatement">/</span>dr <span class="synComment">c 指標1 </span> <span class="synStatement">write</span>(<span class="synStatement">*</span>,<span class="synStatement">*</span>)<span class="synConstant">'壱:ここまで終わったよ!'</span> <span class="synComment">c 断面積、マッハ数、等価直径、ガス静温、内側半径の読み込み</span> <span class="synStatement">open</span>(<span class="synConstant">10</span>,<span class="synStatement">file=</span><span class="synConstant">'areaonly.d'</span>,<span class="synStatement">status=</span><span class="synConstant">'old'</span>) <span class="synStatement">open</span>(<span class="synConstant">11</span>,<span class="synStatement">file=</span><span class="synConstant">'machonly.d'</span>,<span class="synStatement">status=</span><span class="synConstant">'old'</span>) <span class="synStatement">open</span>(<span class="synConstant">12</span>,<span class="synStatement">file=</span><span class="synConstant">'r.d'</span>,<span class="synStatement">status=</span><span class="synConstant">'old'</span>) <span class="synStatement">open</span>(<span class="synConstant">13</span>,<span class="synStatement">file=</span><span class="synConstant">'temponly.d'</span>,<span class="synStatement">status=</span><span class="synConstant">'old'</span>) <span class="synStatement">open</span>(<span class="synConstant">14</span>,<span class="synStatement">file=</span><span class="synConstant">'heat_radius.d'</span>,<span class="synStatement">status=</span><span class="synConstant">'old'</span>) <span class="synStatement">do</span> i<span class="synStatement">=</span><span class="synConstant">1</span>,kiza_x <span class="synStatement">read</span>(<span class="synConstant">10</span>,<span class="synStatement">*</span>)a(i) <span class="synStatement">read</span>(<span class="synConstant">11</span>,<span class="synStatement">*</span>)c(i) <span class="synStatement">read</span>(<span class="synConstant">12</span>,<span class="synStatement">*</span>)r(i) <span class="synStatement">read</span>(<span class="synConstant">13</span>,<span class="synStatement">*</span>)temp_gas(i) <span class="synStatement">read</span>(<span class="synConstant">14</span>,<span class="synStatement">*</span>)radius(i) r(i)<span class="synStatement">=</span>r(i)<span class="synStatement">*</span><span class="synConstant">0.001</span> a(i)<span class="synStatement">=</span>a(i)<span class="synStatement">*</span><span class="synConstant">0.000001</span> radius(i)<span class="synStatement">=</span>radius(i)<span class="synStatement">*</span><span class="synConstant">0.001</span> <span class="synStatement">end do</span> <span class="synStatement">close</span>(<span class="synConstant">10</span>) <span class="synStatement">close</span>(<span class="synConstant">11</span>) <span class="synStatement">close</span>(<span class="synConstant">12</span>) <span class="synStatement">close</span>(<span class="synConstant">13</span>) <span class="synStatement">close</span>(<span class="synConstant">14</span>) <span class="synComment">c tempの初期化</span> <span class="synStatement">do</span> i<span class="synStatement">=</span><span class="synConstant">1</span>,kiza_x <span class="synStatement">do</span> j<span class="synStatement">=</span><span class="synConstant">1</span>,kiza_num temp(i,j)<span class="synStatement">=</span><span class="synConstant">273.15</span><span class="synStatement">+</span>T_shoki <span class="synStatement">end do</span> <span class="synStatement">end do</span> <span class="synComment">c 指標2 </span> <span class="synStatement">write</span>(<span class="synStatement">*</span>,<span class="synStatement">*</span>)<span class="synConstant">'弐:ここまで終わったよ!'</span> <span class="synComment">c 温度伝導率の係数の計算 </span> k_heat02<span class="synStatement">=</span>k_heat01<span class="synStatement">/</span>(mitsudo<span class="synStatement">*</span>hinetsu) k1<span class="synStatement">=</span>k_heat02<span class="synStatement">*</span>dt<span class="synStatement">/</span>(dr<span class="synStatement">**</span><span class="synConstant">2.0</span>) <span class="synComment">c 時間刻み。60秒/刻み時間 </span> <span class="synStatement">do</span> i<span class="synStatement">=</span><span class="synConstant">1</span>,kiza_t <span class="synComment">c 指標3 </span> <span class="synComment">c do k=10,kiza_t,100</span> <span class="synComment">c if(i==k)then</span> l<span class="synStatement">=</span>i<span class="synStatement">/</span>(kiza_t<span class="synStatement">*</span><span class="synConstant">1.0</span>)<span class="synStatement">*</span><span class="synConstant">100.00</span> <span class="synStatement">write</span>(<span class="synStatement">*</span>,<span class="synStatement">*</span>)i,<span class="synConstant">'/'</span>,kiza_t,<span class="synConstant">'回 '</span>,l,<span class="synConstant">'%終了'</span> <span class="synComment">c end if</span> <span class="synComment">c end do</span> <span class="synComment">c x方向刻み </span> <span class="synStatement">do</span> j<span class="synStatement">=</span><span class="synConstant">1</span>,kiza_x <span class="synComment">c 熱伝達率の計算</span> hg_int(j)<span class="synStatement">=</span>hg1(r(i
  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*