《水环境数学模型》(P39-47)隐式差分法求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河流水质模拟计算思路
河流水质模型采用如下方程:
S dt dC
x C E x C u t C L ++∂∂=∂∂+∂∂2 (1) 中:C —水质指标浓度;
L E —纵向扩散系数;
u —平均流速;
S —外部的源和漏(如支流的影响等);
t —时间 ;
x —所考察的距离。
以《水环境数学模型》(P39-47)隐式差分法求解如下:
由于dt dC 为水质指标浓度C 的函数,不妨设KC dt dC =,忽略支流影响。则方程(1)可化成下面形式:
)(2121111
2
111111j i j i j
i j i i j i j i j i i j i j i C C K x C C u x C C C E t C C -+-+-+++++-∆--∆+-=∆-
(2) 对方程(2)整理得:
)2()1()221(11112
112112K x u C x u t C C x
E C K x E t C x E i j i i j i j i i j i i j i i -∆+∆-∆=∆-+∆+∆+∆-
-+-+++ (3)
令: 2
x
E i
i ∆-
=γ 221
12K x E t i i +∆+∆=
β 2
x E i
i ∆-
=α )2
()1(
11K x u C x u t C i j
i i j i i -∆+∆-∆=-δ 方程(3)可简化为:
i j i i j i i j i i C C C δγβα=++++++-1
1111 (4)
边界条件: i=1时 '
111
111
1δγβ=+++j j C C
21
1'1
x
E ∆+=δδ
i=n 时 1
11112+-+++-=j n j n j n C C C
n j n
n j n n C C δβα=+++-1'11' n n n γαα-=' n n n γββ2'+=
矩阵形式:
⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣
⎡---''11
12
2
2
11n n
n n n βαγβαγβαγβ
⎥⎥⎥⎥⎥⎥⎦⎤
⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥
⎥⎥
⎥⎥⎦
⎤⎢⎢⎢
⎢⎢⎢⎣⎡-+-n n j n n C C C C δδδδ12'11
121
河流水质模拟计算流程符号说明: Dx —空间步长 Dt —时间步长
Cj —j 时刻各断面的污染物浓度 E —j 时刻各断面的纵向扩散系数 U —j 时刻各断面平均流速 K —污染物的衰减系数 NT —模拟的次数
其中:A,a,b,c,d,x 为计算辅助矩阵。 计算流程图见图一
图一河流水质隐式差分法体系计算框图
算例采用《水环境数学模型》(P39—47)例题:
已知:整个河流看成顺直均匀流,E=2KM2/h,U=5km/h,K=0.151/h,Dt=0.1h,Dx=0.5km 在x=0处有一个排放时间为1小时的点源。
此程序的设计有一个主程序(shuizhi),两个子程序(HLSZAD和fzhuigan)组成,其中主函数(shuizhi)用于控制模拟次数,初始量的输入以及输出j+1时刻个断面的浓度。其调用子函数(HLSZAD)。子函数(HLSZAD)用于整理三对角方程,为求解做准备,其调用子函数(fzhuigan)。子函数(fzhuigan)是为了求解三对角方程,其返回值为j+1时刻第二个计算断面及其后各断面的浓度。
利用上述方法计算结果见表1
表一书中计算结果与自己编程结果对比表
注:(1)“理论”为书中计算结果,“实际”自己编程结果。
(2)程序中书中边界断面为0断面,而编程中边界断面为第1端面
总体上是可以的,只是0.2h末时第8,10,12,14,16断面浓度相差较大,一小时末第16断面浓度相差较大。估计0.2h末时第8,10,12,14,16断面浓度为书中记录错误。一小时末第16断面偏差大现在还不清楚。
开始编程时将1小时作为一个计算时间段,即j=10时的瞬间,第0断面其浓度突然由10mg/l突变成0mg/l,这次的突变对后面各断面是没有影响的,而在初次编程时考虑了突变
的影响(不合理),导致j=10时前几个断面与书中所给浓度偏差较大,在10%左右。 书中的例子是以BOD 5来计算的,其对COD MN 和氨氮也同样成立。因为COD MN 和氨氮的变化均为一级反应,因此将两者可以化为统一的数学表达式:
P KC dt
dC
+-= 其中:K —COD MN 或氨氮的综合衰减系数
P —常数,其为其他物质对COD MN 或氨氮浓度的影响。 附录:MATLAB 程序 主函数:(shuizhi )
function shuizhi E(18)=0; E(:)=2; U(18)=0; U(:)=5; K=0.0151; Cj(18)=0; Cj(1)=10; Dt=0.1; Dx=0.5; j=0; while (j<10)
Cj=HLSZAD(E,U,Dt,Dx,K,Cj); j=j+1; if j>=10 Cj(1)=0; end
n=length(Cj);
fprintf('\n 第%d´次各断面浓度\n',j) for i=1:n
fprintf('\t%f',Cj(i)); end end
子函数(HLSZAD )
function [Cj]=HLSZAD(E,U,Dt,Dx,K,Cj) %E- j 时刻各断面的纵向扩散系数 %U-j 时刻各断面的平均流速 %Dt-时间步长 %Dx-空间步长 %K-综合衰减系数 %Cj-j 时刻各断面浓度