Fortran 板


LINE

請教大家,我在做一個一維擴散的模擬, 在我一步一步debug之後,知道問題在迴圈的部分,好像會無法結束?? 可以成功編譯成執行檔,但一旦開始執行,就無法結束了,也無法輸出結果.. 以下是程式碼,麻煩版有幫我看看哪邊出錯了?? program diffusion   !1-D diffusion implicit none !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !宣告區 real L,D,J,C,T,F,smallt !L=length,D=diffusivity,J=diffusion flux,C=initial concentration !F=Fourier's number, smallt=time interval real, parameter :: defaultL = 10 real, parameter :: defaultD = 1.03 real, parameter :: defaultJ = 1E-5 real, parameter :: defaultC = 1E-4 real array1(-1:10001),array2(-1:10001) !the length is divided into 10000 pieces, 10001 nodes, 2 virtual nodes integer*8 p, pmax, x !p=pace, x=location character mode !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !輸入設定參數 write(*,*) "press ""1"" to select the default values, or""2"" to input them" read(*,*) mode if(mode=="1") then L = defaultL D = defaultD J = defaultJ C = defaultC else write(*,*) "please input the length:" read(*,*)L write(*,*) "please input the diffusivity:" read(*,*)D write(*,*) "please input the diffusion flux:" read(*,*)J write(*,*) "please input the initial concentration:" read(*,*)C end if write(*,*) "please input the time:" read(*,*)T !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !計算用到的參數 smallt = 0.25*L*L/D/10**8 pmax = T/smallt F = D*smallt/(L*L)*10**8 array1 = C array2 = C !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !這裡就是出錯的開始!!! do p=1,pmax do x=0,10000 array1(-1) = J*L/10000/D + array1(0) array1(10001) = array1(10000) + array1(0) - array1(-1) array2(x)=F*(array1(x+1)+array1(x-1))+(1-2*F)*array1(x) end do array1 = array2 end do !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !將陣列輸出到文字檔 open(unit=10,file="diffusion1.txt") do x=-1,10001 write(10,*) array1(x) end do STOP END --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.211.150
1F:→ Cypresslin:應該不是無法結束,是迴圈太大,pmax還要乘上10000 12/18 09:52
2F:→ kkarthur:smallt = 0.25*L*L/D/10**8 檢查你的smallt的值 12/18 12:25
3F:→ kkarthur:如果沒有意外應該是0,導致pmax極大,迴圈跑不完 12/18 12:26
4F:→ kkarthur:改成smallt = 0.25*L*L/D/10.0**8.0 試試看 12/18 12:26
5F:→ kkarthur:不僅是這個地方,例如array1(-1) = J*L/10000/D 12/18 12:30
6F:→ kkarthur:這都會'讓你的結果與預期的不同 12/18 12:30
謝謝~ 目前我把迴圈數設定成100的話都可以執行成功,所以應該是迴圈太大的問題, 0.25*L*L/D/10.0**8.0有改過但還是跑不完~ 這問題滿棘手的..因為有些參數就是得這麼小阿......QQ ※ 編輯: YmemY 來自: 140.112.4.209 (12/18 13:46)
7F:→ mk650:t=10,pamx=41200000,x=412000000000,粉大的迴圈,如果參數沒 12/18 13:56
8F:→ mk650:錯,也只能丟著給它跑啦 12/18 13:56
9F:→ Cypresslin:你可以再把迴圈裡跟x無關的拿出來,可能可以快一咪咪 12/18 13:57
10F:→ mk650:呵三樓的精簡化本人常幹,不過它這個程式很簡單,只有兩行多餘 12/18 14:00
11F:→ mk650:差別不大啦.重點在t要多大,t=0.0001夠嗎? 12/18 14:00
t最多可能要到100...囧 不過我想或許我的D數字錯了,他可能是10^-10這麼小,所以smallt可以不用這麼小.. 雖然試了一次還是行不通 但方向應該沒錯 再搞搞看...謝謝
12F:→ mk650:t=1,十分鐘跑完,I7 2600套裝很便宜電腦,更好的電腦得會更快 12/18 14:17
13F:→ mk650:這樣很快了,我的程式都要跑一周以上,有三週還沒跑完的 12/18 14:18
挖賽!!!!! 原來真的要這麼久XD ※ 編輯: YmemY 來自: 140.112.211.150 (12/18 22:53)
14F:推 george1224:建議把你所計算的數值的order提高一點,電腦在進行計算 12/19 22:32
15F:→ george1224:的時候,其精度會有差別... 12/19 22:33
感謝各位的提示,經由將參數調整地平易近人一點後,模擬出正確的結果了! ※ 編輯: YmemY 來自: 140.112.211.150 (12/28 02:08)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP