1.一维对流方程
利用一维对流方程去用于求解污染物扩散,但对于对流方程这样的差分方程而言,先需要对差分方程进行离散,简单来说有前向差分、后向差分以及中心差分格式(就空间而言前两个是一阶、最后的中心差分格式是二阶),当然还有更多的高阶格式以及变式。
上式中,C 代表浓度。
2.问题简述
在x轴上,某处突然出现了污染物泄漏(污染物分布详见图1 网格单元划分),同时沿着x轴介质(水或者空气)流动速度为0.5m/s,试求解污染物的扩散。
3.关于MINMOD格式
MINMOD格式也可以称为限制器,它的原理是利用离散化的求解格式计算每个网格单元的具体参数(本例即为浓度C )时比较本网格单元向前和向后的浓度梯度,取较小值。
4.编程实现
下面给出程序的主要部分:
for m=1:nstepmf(:,m)=f;lf(:,m)=fu;if m==1% hold off;figure (1)plot(x,f,'k-')hold onelseif m==200||m==400||m==600plot(x,f,'b--');plot(x,fu,'r-.');% pause(0.5)endfoo=f;for is=1:2 %two steps per timestepfo=f;for i=2:n-1bot=(fo(i)-fo(i-1));top=(fo(i+1)-fo(i));r=top*bot/(bot^2+0.00001);psi=max([0, min([r,1])]); % minmodfh(i)=fo(i)+0.5*psi*(fo(i)-fo(i-1));endbot=(fo(1)-fo(n-1));top=(fo(2)-fo(1));r=top*bot/(bot^2+0.00001);psi=max([0, min([r,1])]); % minmodfh(1)=fo(1)+0.5*psi*(fo(1)-fo(n-1));fh(n)=fh(1);for i=2:n-1f(i)=fo(i)-Co*(fh(i)-fh(i-1) );endf(1)=fo(1)-Co*(fh(1)-fh(n-1) );f(n)=f(1);endfor i=1:nf(i)=0.5*(f(i)+foo(i));end%一阶迎风fuo=fu;for i=2:n-1fu(i)=fuo(i)-Co*(fuo(i)-fuo(i-1));endfu(1)=fuo(1)-Co*(fuo(1)-fuo(n-1));fu(n)=fu(1);end
5.结果展示
------------------------------------------------------------------
------------------------------------------------------------------
获取全部代码,请回复
MINMOD
------------------------------------------------------------------
------------------------------------------------------------------