作者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