作者Ecampus (7.7)
看板Fortran
標題Fw: [疑問] 跑擴散方程式 到了終點..卻不會衰退
時間Mon Oct 16 00:53:38 2017
: http://imgur.com/TxeHaFC
:
: 這是一維的汙染物濃度擴散方程式
: u是速度 c是濃度
: E是擴散係數(延散係數)
: P是衰減係數
:
:
: 我用台灣某條河川 做實地測驗、與跑程式模擬兩個結果
: 實地測驗得到的曲線
: 就是高斯分布那一種型態(從0→到濃度最高點→到終點濃度衰退為0)
:
:
: 跑程式的話
: 依照各參數輸入 得到的結果卻是(0→濃度最高點→到終點仍然濃度最高點 沒衰退衰減過)
:
: → wohtp: 有圖嗎?你的初始條件和邊界條件是什麼? 10/10 10:36
: → wohtp: 終點是時間上的終點嗎?多遠? 10/10 10:39
您好 初始條件 我是假設開始的釋放點(0公尺處) 濃度為100ppb
邊界條件 我假設終點站是N 又C(N-1)=C(N+1) 所以濃度會一直無法下降
後來我改成C(N)=0
(距離是 0M~1600M)
(時間設定是0分鐘~160分鐘)
但是 也是到後面快終點的時候 濃度才會降下來
我想得到的圖形是類似高斯分布這樣的
https://imgur.com/w11jVaI
但我實際得到的結果是
https://imgur.com/vZSSWeh
=.=
我想做的是 時變的系統 濃度隨時間變化的
不過現在卡關 我知道時不變系統怎麼做....不知道時變系統怎麼做
求高手幫忙解惑 薄酬2000P
CC(I)=CC(I)+E*DT*(CC(I+1)-2*CC(I)+CC(I-1))/DX/DX-&
U*DT*(CC(I+1)-CC(I-1))/2./DX-&
DE*DT*CC(I)
CC(N)=0
我的時不變系統是這樣寫
如果改成時變..我還在想要如何改
: → Vulpix: 聽起來除了沒衰退有點詭異外,一段時間後濃度最高點位置不 10/10 20:20
: → Vulpix: 變,這件事不是什麼大問題啊。當然視乎你的IC、BC、t。 10/10 20:22
: → wohtp: 我本來想說是邊界條件沒設對,擴散到最旁邊又被擋回來之類 10/11 10:21
: → wohtp: 但是發現他還有用手放進去衰減 10/11 10:22
: → wohtp: 最後沒有變成零就是數值做錯了,沒話好說 10/11 10:23
: → saltlake: 確定參數輸入正確? 跑的程式誰寫的? 10/11 11:17
※ 編輯: Ecampus (125.230.93.84), 10/16/2017 00:59:26
1F:推 perceval: 1.時變系統每次迭代要先記錄新的值,等所有的點都跑過了 10/16 05:32
2F:→ perceval: 才更新 CC_new(I) = CC(I)+.... 10/16 05:32
3F:→ perceval: 2.我會建議你先設計一個簡單的測試問題來檢查程式是否 10/16 05:33
4F:→ perceval: 正確。可以先省略壓力項,找exact solution 測試 10/16 05:36
6F:→ perceval: 另外你數值PDE(或是計算相關)背景不夠,建議修課或是找 10/16 05:39
7F:→ perceval: 書好好念(比方說你dt要取多少才穩定) 10/16 05:40
9F:→ Ecampus: 我試一下大大說的時變寫法看看 唉 當初沒好好學基本程式= 10/16 17:10
10F:→ Ecampus: =.=導致現在的苦果 10/16 17:11
11F:→ Ecampus: DT取0.1應該OK 10/17 00:32
12F:推 roythepigmy: 大概看了一下你的原始碼,你的程式本來就是用來時變 10/20 00:38
13F:→ roythepigmy: 系統的,似乎是一維連續釋放模式,因為C(1)程式執行 10/20 00:42
14F:→ roythepigmy: 執行過程沒有變動過(是CC(1),筆誤sorry) 10/20 00:43
15F:推 roythepigmy: 不過連續釋放模式CC(1)應該要是濃度最高的,你跑出 10/20 01:22
16F:→ roythepigmy: 你跑出來的模型很奇怪,可能你有變動程式碼過的關係 10/20 01:23
18F:→ roythepigmy: 污染峰應該會像圖1一樣隨時間變化,中間確實會降不來 10/20 01:31
19F:→ roythepigmy: 你模型尺度和釋放時間沒配合好的話,OUTPUT數據繪製 10/20 01:32
20F:→ roythepigmy: 起來會感覺怪怪的,如圖2,你如果用較小的模型去看 10/20 01:33
21F:→ roythepigmy: 已經發展到T3的污染峰的話,看起來像是一條直線, 10/20 01:34
22F:→ roythepigmy: 但如果只看發展到T2的污染峰,看起來就很親切了。 10/20 01:34
23F:→ roythepigmy: 同理,如果你用如圖3的較大尺度觀察T3污染峰的話, 10/20 01:36
24F:→ roythepigmy: 圖形似乎也正常多了。 10/20 01:36
25F:→ roythepigmy: 建議以未修改的原始程式,先隨意調整END_X、TT, 10/20 01:43
26F:→ roythepigmy: 甚至是速度項的UU(1)、UU(2),來試試看是否可產生類 10/20 01:43
27F:→ roythepigmy: 似的圖形。 10/20 01:44
28F:→ roythepigmy: 但調END_X時要注意3個Xstop的配合。 10/20 01:45
29F:→ roythepigmy: 另外你把CC(N)設為0的話,那點會類似1個很強的sink, 10/20 01:49
30F:→ roythepigmy: 所以你跑的圖形可看到CC(N)前幾點濃度被硬拉下來 10/20 02:01
31F:→ roythepigmy: 又因為是1維模型,質量繞不過去那點,他表現得會像是 10/20 02:05
32F:→ roythepigmy: 一個污染物抽出量一直在變化的井,目的是讓那點的 10/20 02:07
33F:→ roythepigmy: 污染物質量(濃度)抽為0。 10/20 02:08
34F:→ Ecampus: 好的 感謝Q_Q我來調整一下 10/23 00:19