摘要:
本文依据路面倾角α不同建立两种模型,利用区间分析法与逐步放井思想对两种模型依据降雨量与排水量之间的关系进行分析。但由于模型中未定的因素过多,即相邻井的距离与井的数目均有无数组解,且有许多也为最优解,所以无法将解一一列出,对这种情况我们从实际出发,给出符合实际的初始条件,从而得到较为符合实际的解,对于ε我们也进行的专门的讨论,从而使模型更具广泛性。
我们利用模型来检验西安市小寨十字路口的排水管道的合理性,从而判断模型使否具有普遍性。
一:问题的重述
每当降雨时,街道总会有一定积水,这不但给过往的行人带来许多不便,而且也易引起交通事故。合理的下水道管口的布局时在强降雨的情况下,也能保证街道上的积水适量,不至于影响到行人及车辆的正常通行。但是如果下水道管口的数目越多,单位时间内排水的量也越多,可是过多的下水道会增加安装费用。因此合理的下水道管口的布局时在保证适量的积水时,所花的给用最小。
二:假设:
1:不考虑交通对降雨的影响;
2:不考虑地面对降水的吸收;
3:认为各地的降雨的强度均匀;
4:由于路的相似性,只考虑长为L坡度为α的一段路面;
5:只考虑单边分布的下水井;
6:下水井的大小相对于相连两个下水井的距离比较小,因此可视为质点;
7:将积水的流动视为明渠均匀流,既雨水流动的速度为某一常数;
三:符号说明:
h —— 单位时间内最大降水强度;
q —— 一个下水井单位时间内的最大排水量;
Qi —— 第i区间内的单位时间内最大降雨量;
Qi’—— 单位时间内第i区间流入第i+1内的水量;
ni —— 第i区间内的水井数;
H —— 所允许的最大积水厚度;
S0 —— 路口的面积;
n0 —— 路口的水井数;
L —— 路的总长(不含路口的长度);
V —— 水的流速;
li —— 第i区间内的长度;
ε—— 第i区间流入第i+1内的水量的比例系数;
Si —— 第i区间的面积;
t0 —— 某段时间内最大降雨持续得的时间;
β—— 为路面对水的降水阻尼系数 β [0.58,0.62];
S —— 为下水井的面积;
g —— 为重力加速度;
qi (t)—— 有倾角时每段区间中下水井排水量随时间的函数关系;
q’(t)—— 无倾角时下水井排水量随时间的函数关系;
y(t) —— 积水高度随时间的函数关系;
四 :模型的分析与建立
只考虑最大降雨强度时路面的积水情况,且当降雨到一定程度时,路面积水达到限定高度H(满足最大降雨情况就能满足其他情况时的要求),将所考察得时间间隔定为单位时间 ;
考虑路面的情况,可将路面分为倾角α=0;α≠0两种情况 ;
a:当α=0时
路面 a
(图一)
排水管的位置
由于路面平坦可认为下雨时水层是同厚度H平铺在路面上。
此时设有井数n,
有降雨量小于等于排水量的关系可导出:
L*a*h <=n*q ⑴
其中,q=β*S*
b:当α≠0时
(1)
十字路口的位置 下水道管口的位置 第一个区间
(图二)
采用划分区间逐步放井的方法,即降路面L分为n段区间,使每个区间的井数ni能承受最大排水量。考虑每个区间的降雨量Qi,由第i区间流入第i+1区间的水量为Qi’,每个区间内的排水量为ni*q,由每个区间的水量等于每个区间的最大排量,可导出: Q1- Q1’<=n1*q; 第一区间内 ⑵
Q2+ Q1’-Q2’<=n2*q;第二区间内
…………
Qn+Qn-1’-Qn’<=nk*q; 第k区间内 ⑵
由上式相加`
1可得:
- Qn’<=q* ⑶
由路口的降雨量与排水量的关系等
得出:Qn’+h*S0<= n0*q ⑷
Qi= Si*h=a*h*li ⑸
(2)
第一个区间 倾角α 排水井
十字路口的位置
(图三)
同理,图三情况与图二情况一样,在此不做累述。
五:模型的求解
1:
当α=0时:
由(1)式得:
n>=L*a*h/q
所以得出:
min n = L*a*h/q
对于每一个区间井的数显然有无数组解,我们可以认为井是均匀分布的,从而可以得出一组较符合实际的特解:
li=L/n;
当α≠0时:
由式⑶,式⑷联立可以得到:
min n=( +h*S0)/q;
但是每一个区间内的井数与区间的长度是由方程组⑵决定的,不同的ni值有不同的li值,即方程有无数组解。只要知道一个初始条件就可以得到一组特解。
初始值的导出
每个区间内的井数:ni=1;
假设:Qi’= Qi*ε 0<ε<1 可以得到
l1=q/(a*h*(1-ε));
l2= q*(1-2*ε)/(a*h*(1-ε)^2);
l3=q*(1-3*ε+3*ε^2)/(a*h*(1-ε)^3)
……………… ⑹
li=(q*(1-i *ε+i *ε^2+……+i*ε^(i-2)
-i*ε^(i-1)))/(a*h*(1-ε)^i)
其中i为偶数
li=(q*(1+i*ε-i *ε^2-……-i*ε^(i-2)
+i*ε^(i-1)))/(a*h*(1-ε)^i)
其中i为奇数
六:模型的优缺点及推广和改进方向
通过与实际情况的比较,上述模型的缺点是没有考虑降雨时间对系统的影响,因此我们提出改进模型:即考虑时间效应
目标:保证在最大降雨时段t内(例如:取十年内最大降雨量的降雨时间)路面积水不超过最大积水高度H,以此求出总下水井数与井的位置。
当α=0时
在0—t内
降雨量为:(a*L+ S0)*h*t;
积水量为:(a*L+ S0)*H;
排水量为: * ;
要满足条件,有:
(a*L+ S0)*h*t<=(a*L+ S0)*H+ * ;
所以
min n=min =[(a*L+ S0)*h*t-(a*L+ S0)*H]/ *
其中q’(t)=β*S* ;
积水厚度y(t)的给出:
积水量的微变(a*L+S0)*△y=h*(a*L+S0)* △t-q’*△t;
=h- ;
当△t 0时,有 = =h-
∴ =h-β*S*sqrt(2*g*y(t))/(a*L+S0);
用MATLAB解出上式,得
y(t)= t-Int((2*a*L+2*s0)/(2*h*a*L+2*h*s0-b*s(2*g*a))
q’(t)= β*(a*L+S0)*(2*g*t-Int((2*a*L+2*s0)/(2*h*a*L+2*h*s0-b*s(2*g*a)) )^1/2;
因为此时路是平面,所以与上述对井位置的讨论类似,在此不再累述
当α≠0时:
同用分段考虑的办法
有:Q1*t- Q1’*t<=n1* ;
Q2*t+Q1’*t-Q2’*t<=n2* ; ⑺
…………
Qn*t+Qn-1’*t-Qn’*t<=nk* ;
其中:Qi=t*h*a*li;
Qi’= Qi*ε 0<ε<1
将⑺式累加:⑻
-Qn’*t<= * ⑻
路面有:
t*h*S0+ Qn’*t <=n0* ⑼
式⑻+⑼得:
+ t*h*S0<= * + n0*
同时有初始条件:
y(0)=0; y(t0)=H;
以此可推出最少井数与布井位置的关系。
七:模型的应用
现用该模型来检验西安市小寨的四条交叉路口街道`下水口布局情况是否合理,已知小寨南端比十字路口高1米,小寨北端比十字路口高0。8米,小寨东端比十字路口高0。5米,小寨西端比十字路口高0。4米。
由于十字路口的每端路口的倾角α非常小,可以近似为0,既可以忽略倾角α的存在,我们视所考察的十字路口为平面。我们从十字路口的中心开始,向四个路口的下水井每个管口逐个检验,若发现在某一处下水井管口的排水量为其最大排水量q时,路面上的积水超过适量积水H,这时我们就认为该下水井管口在此处不合理,若发现不合理的下水道管口的布局后,应在此处增加下水井管口的个数,使路面上的积水不超过适量积水H,如此循环直到检验到每个路口的最高处。如果我们没有发现不合理的下水井管口的布局,则可认为该十字路口的下水井管口的布局是合理的;若在循环中发现不合理的下水井管口,记录其位置,然后在由路面上的积水不超过适量积水H计算出在此处该增加多少个下水井管口的数目。
我们认为下水井的布局若是不合理的情况时,不可能是所有下水井的布局均为不合理的,其中只有个别位置的下水井不合理,没有必要改动所有井的位置,这样只要在不合理井的位置前增加或减少井的数目既可。
我们发现此循环与c语言的for循环有许多相象之处,因此我们设计算法来检验此十字路口的下水井管口布局的合理性。
Step 1:
计算出每一个下水井管口最大排量 q,十字路口处的面积s十字;
Step 2:
输入每一个方向的下水井管口的信息(距十字路口的距离及个数),输入每一路口的宽度(不包括绿化带的宽度);
Step 3:
从每个方向上第一个出现的下水井开始检验,计算出降雨的量与下水井排出雨水的量的差,从而计算出每一次出现下水井前路面上的积水的厚度h[k],
Step 4:
判断h[k]与适量厚度的H的关系
若h[k]>H,输出该处的下水井的布局是不合理的,然后由h[k]不超过H,计算出在该下水道井的位置上应增加多少个下水道井的数量,并记录增加下水道井的位置及个数,然后继续进行循环;
若h[k]<=H,继续进行循环;
直到检验到路的终点;
Step 5:
若下水井所有管口均合理,输出小寨十字路口的街道的下水井的布局是合理的;
若发现有下水井的布局是不合理的,输出在某处下水井是不合理的(既输出该管口的位置),并输出改进的发案(既输出增加下水井的个数)。
八:参考文献
1:《工程流体力学》 `高等教育出版社
2:《c程序设计》(第二版) 谭浩强 清华出版社
3:《MATLAB 6.1 实用指南》 苏金明 等 电子工业出版社
九:附录
模型应用的源程序:
#include<iostream.h>
#include<math.h>
void main()
{
int a[4][22]; //数组表示每个街道的井的布局 其中0代表东,1代表北,2代表西,3代表南
int b[4][22]; //数组表示每个街道的井的数目,其中0代表东,1代表北,2代表西,3代表南
int i,j;
cout<<"请输入东边路口井距十字路口的距离:"<<endl;
for(j=0;j<22;j++)
{
cin>>a[0][22];
}
cout<<endl;
cout<<"请输入北边路口井距十字路口的距离:"<<endl;
for(j=0;j<22;j++)
{
cin>>a[1][22];
}
cout<<endl;
cout<<"请输入西边路口井距十字路口的距离:"<<endl;
for(j=0;j<22;j++)
{
cin>>a[2][22];
}
cout<<endl;
cout<<"请输入南边路口井十使字路口的距离:"<<endl;
for(j=0;j<22;j++)
{
cin>>a[3][22];
}
cout<<endl;
cout<<"请输入东边路口井距十字路口的数目:"<<endl;
for(j=0;j<22;j++)
{
cin>>b[0][22];
}
cout<<endl;
cout<<"请输入北边路口井距十字路口的数目:"<<endl;
for(j=0;j<22;j++)
{
cin>>b[1][22];
}
cout<<endl;
cout<<"请输入西边路口井距十字路口的数目:"<<endl;
for(j=0;j<22;j++)
{
cin>>b[2][22];
}
cout<<endl;
cout<<"请输入南边路口井距十字路口的数目:"<<endl;
for(j=0;j<22;j++)
{
cin>>b[3][22];
}
cout<<endl;
float s0=8738.125; //s0表示十字路口的面积
int s[4][22]; //s[4][22]表示每一处的井距十字路口的面积
float d0=14,d1=15,d2=14,d3=18; //其中d0表示东边路的宽,d1表示北边路的宽,d2表示西边路的宽,d3表示南边路的宽
for(j=0;j<22;j++)
{
s[0][j]=d0*a[0][j]; //计算出东边路的面积
s[1][j]=d1*a[1][j]; //计算出北边路的面积
s[2][j]=d2*a[2][j]; //计算出西边路的面积
s[3][j]=d3*a[3][j]; //计算出南边路的面积
}
int k; //循环参数
int h[22],H,q,d[4][22]; // H表示降雨的量 q表示适量的积水
cout<<"请输入降雨量的值:";
cin>>H;
cout<<"请输入适量积水的量:";
cin>>q;
k=1;
{d[0][1]=d[1][1]=d[2][1]=d[3][1]=0;
d[k]=d[k-1]+b[k-1];
}
h[k]=((s0+s[0][k]+s[1][k]+s[2][k]+s[3][k])*H-(d[0][k]+d[1][k]+d[2][k]+d[3][k])*q)/(s0+s[0][k]+s[1][k]+s[2][k]+s[3][k]);
//给出了每一个井前路面上积水的计算公式
while(k<23)
{
if(h[k]>H)
{
cout<<"该路段在这里不合理"<<endl;
}
else
k++;
}
cout<<"该路带井的布局是合理的";
}
|