Re: [請益] 暫態移動熱源

看板Fortran作者 (挨)時間12年前 (2012/04/15 16:52), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《adiadiadi (笑一笑沒什麼)》之銘言: : 各位好 : 最近在寫一個暫態二維的熱擴散方程式 : 小弟才疏學淺,在移動熱源的地方一直卡住 : 這熱源由雷射加熱(加熱寬度s) : 每隔時間 tou 會在下一個間隔landa的位置加熱一次 ^^^^^^^^^^^^^^^^^^^^^ 這句話的意思是指,第二個tau加熱源位置與第一個tau加熱源位置相差lambda ?? 換句話說,加熱源寬度為s的話 time < tau,加熱源位置是x=0~s tau < time < 2*tau ,加熱源位置是x=s+lambda~s+lambda+s 2*tau < time < 3*tau ,加熱源位置是x=s+lambda+s+lambda~s+lambda+s+lambda+s 依此類推... 你的意思是這樣嗎? 如果只是要應付作業,我想應該都是用等大小的結構性網格 那麼最簡單的做法,修改一下上篇版友的CODE就好: 若dx是x方向上的網格大小 m1及m2分別是s與lambda佔據的網格數量,即m1=INT(s/dx), m2=INT(lambda/dx) , 而dt是time step的話,令m3為tau佔據的dt數量,即m3=INT(tau/dt) , m1、m2、m3皆為整數資料型態 (我想應該很少人會設計dx無法整除s與lambda 和 dt無法整除tau吧@@) DO t=1,Nstep q_dot=0 N=t/m3 !注意t跟m3都是整數資料型態 q_dot( N*(m1+m2)+1 : N*(m1+m2)+m1 )=const . . 後面續接PDE SOLVER . . ENDDO 如果我沒理解錯的話,應該這樣就可以了,當然其實是還有一些改良空間的 既然剛學FORTRAN,那要注意m1=s/dx、m2=lambda/dx、m3=tau/dt 這3個式子 因為這是浮點數運算完後 要轉換成整數型態, FORTRAN是用無條件捨去,小心浮點數運算造成的誤差 以上 其實這跟FORTRAN真的是沒什麼關係.... 但是數值方法跟科學計算好像PTT上也沒特定的討論版@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.218.94

04/16 09:11, , 1F
謝謝!我現在嘗試heviside或是dirac delta函數的方法try
04/16 09:11, 1F

04/16 09:11, , 2F
謝謝!
04/16 09:11, 2F
文章代碼(AID): #1FYenO2A (Fortran)
文章代碼(AID): #1FYenO2A (Fortran)