AE大气扩散模型算法.ppt
《AE大气扩散模型算法.ppt》由会员分享,可在线阅读,更多相关《AE大气扩散模型算法.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大气污染模型高斯大气扩散模式单源大气污染扩散模拟1大气扩散模式大气扩散模式是对大气污染物散布过程的模拟。按污染源的几何特征可分为电源、线源、面源扩散模式;按污染源排放特性分有正常工况模式和非正常排放模式;按假设条件不同分有烟流扩散模式和烟团扩散模式;按模式适用范围不同分有短距离扩散模式和中长距离输送模式等。具体操作时应根据当地地形、气候等环境要素以及污染源亲何况正确选取并适当修正,不能盲目照搬。主要的大气扩散模式有:(1)高架电源扩散模式(静风模式、有效源高等)(2)面源扩散模式(虚电源模式、窄烟云模式:在多面源情形下计算效果较好)(3)线源扩散模式(电源求和法、风向与线源平行时扩散模式)2高
2、斯大气扩散模式高斯大气扩散模式属于高架电源的烟羽大气扩散模式,它是计算释入大气中的气载污染物下风向浓度的应用最广的方法。高斯扩散模式所描述的扩散过程主要有以下几种:下垫面平坦、开阔、性质均匀,平均流场平直、稳定,不考虑风场的切变;扩散过程中,污染物本身是被动、保守的,即污染物和空气无相对运动,且扩散过程中污染物无损失、无转化,污染物在地面被反射;扩散在同一温度层集中发生,平均风速1.0m/s;适用范围一般大气稳定度的确定Pasquill根据五类地面风速、三类日间的日射和两类夜间云量把扩散天气分为6类,即强不稳定、不稳定、弱不稳定、中性、较稳定和稳定。分别用英文字母A、B、C、D、E和F表示。在
3、国标“制订地方大气污染排放标准的技术原则和方法”(GB3840-83)与“环境影响评价技术原则”(HJ/T2.1-93)中,建议采用下属修订的帕斯奎尔稳定度分类方法。首先由云量与太阳高度角按表1查出太阳辐射等级数,再由太阳辐射等级数与地面风速按表2查找稳定度等级。表1太阳辐射等级数云量太阳辐射等级数总云量/低云量夜间h0=1515h0=3535h065=4/=4-2-1+1+2+357/=8/=5/570000+1=8/=800000表2大气稳定度等级地面风速(m/s)太阳辐射等级+3+2+10-1-2=6DDDDDD2高架源回归系数(Py、qy、Pz、qz)确定国际原子能机构(IAEA)根据
4、相关实验数据,推荐了一组适用于大粗糙度(Z01m)和高架源的弥散系数公式,如表3,据此求得相应地扩散参数。表3与排放高度有关的扩散参数(、)释放高度回归系数扩散范围ABCDEF50Py1.5030.8760.6590.6400.8011.294qy0.8330.8230.8070.7840.7540.718Pz0.1510.1270.1650.2150.2640.241qz1.2191.1080.9960.8850.7740.662100Py0.1700.3240.4660.5040.4110.253qy1.2961.0250.8660.8180.8821.057Pz0.0510.0700.1
5、370.2650.4870.717qz1.3171.1510.985 0.8180.6520.486180Py0.6710.4150.2320.2080.3450.671qy0.9030.9030.9030.9030.9030.903Pz0.02450.03300.1040.3070.5460.484qz0.5001.3200.9970.7340.5570.500、是下风距离X及大气稳定度的函数,而下风方向的距离X是一变量,它是风速和时间的函数。高架电源烟气扩散是三维扩散过程,x方向上风速较大,以对流扩散为主,y方向和z方向则以弥散扩散为主。本实例编程只是实现了二维扩散模型。即只是实现了xy方
6、向上的扩散模拟。1相关菜单的添加在空间分析主菜单中添加如下图所示菜单项。2大气污染扩散分析窗口的设计设计一个大气污染扩散分析窗口。1271112这些Label的AutoSize属性设置为:FalseBorderStyle属性设置为:Fixed3D一些主要控件的属性设置如下:控件编号控件类型修改的属性NameText1ComboBoxcomboBox_layer字段名:2ComboBoxcomboBox_polluter设置图形参数:3LabelLabel_nameLabel_name4LabelLabel_typeLabel_type5LabelLabel_addressLabel_addre
7、ss6LabelLabel_personLabel_person7NumericUpDownwinddirection8TextBoxwindspeed9TextBoxheight10ComboBoxinterpolateHeight11ButtonbtnOK12ButtonbtnCancel其中大气污染扩散分析窗口的AutoSizeMode属性设置为:GrowAndShrink;MaximizeBox属性设置为:False3菜单与窗口连接的实现双击“单源大气污染”菜单项,在响应的Click事件中添加如下代码:privatevoid单源大气污染ToolStripMenuItem_Click(o
8、bjectsender,EventArgse)大气污染扩散分析form=new大气污染扩散分析();form.Show();4高斯大气扩散功能的模拟实现步骤1:重写“大气污染扩散分析”类的构造函数,鉴于在该模型实现过程中多次需要调用主窗口中的函数或控件,所以为构造函数添加参数:主窗口MainForm,同时在单源大气污染ToolStripMenuItem_Click事件中修改代码。大气污染扩散分析form=new大气污染扩散分析();修改为:大气污染扩散分析form=new大气污染扩散分析(this);步骤2:在“大气污染扩散分析”窗口类中对相关参数进行初始化。using;/相关接口所在的命名空
9、间using;/窗口类中定义的相关全局变量publicDiffusedParameterdiffusedParameter50;/定义大气扩散参数结构体,该结构体是自己编写的,这里放在初始化函数后publicDiffusedParameterdiffusedParameter100;publicDiffusedParameterdiffusedParameter180;constdoublePI=3.1415926;private主窗口parentForm;privateintradius=-1;/辐射等级privateintatmosphereStability=-1;/初始化大气稳定度等级
10、privatedoublePy,Pz,Qy,Qz;/计算中使用的扩散参数privatedoubleQ=500;/气载污染物源强,即释放率(mg/s)IEnvelopeenvelope;public大气污染扩散分析(主窗口MainForm)InitializeComponent();/初始化“风向”、“风速”、“释放高度”、“计算高度”windspeed.Text=5;height.Text=100;interpolateHeight.Text=100;ILayerlyr;IFeatureLayerfeatureLyr;parentForm=MainForm;envelope=newEnvelo
11、peClass();/初始化图层组合框for(inti=0;i=0)/当图层属性表中存在“名称”属性列时,即将该列的所有属性字段值添加到combBox_polluter组合框中IRowrow;while(row=cursor.NextRow()!=null)comboBox_polluter.Items.Add(row.get_Value(fieldIndex);elseMessageBox.Show(所选择的数据层不能提供污染源信息);/初始化label_address、label_name、label_person、label_typelabel_address.Text=;label_n
12、ame.Text=;label_person.Text=;label_type.Text=;运行程序,显示如下:步骤4:响应comboBox_polluter的SelectedIndexChanged函数,当选择comboBox_polluter中任意一数据项时,在label_name、label_type、label_address、label_person中添加从数据库中获取的污染源的名称、所属行业名称、地址和负责人信息。using;privateOleDbConnectionconn;privatevoidcomboBox_polluter_SelectedIndexChanged(ob
13、jectsender,EventArgse)stringname=;stringsql=SELECT代码,名称,8#行业类别_名称,县(区、市、旗),乡(镇),街(村)、门牌号,单位负责人FROM(SELECT代码,名称,8#行业类别_名称,县(区、市、旗),乡(镇),街(村)、门牌号,单位负责人FROMG101UNIONALLSELECT代码,名称,8#行业类别_名称,县(区、市、旗),乡(镇),街(村)、门牌号,单位负责人FROMG201)ASderivedtbl_1WHERE(名称=+name+);conn=newOleDbConnection(Provider=Microsoft.Je
14、t.OLEDB.4.0;DataSource=+Application.StartupPath+Database.mdb);OleDbCommandcmd=newOleDbCommand(sql,conn);/申明的OleDbCommand对象,表示要对数据源执行的SQL语句conn.Open();OleDbDataReaderreader=cmd.ExecuteReader();intcols=reader.FieldCount;objectvalues=newobjectcols;if(reader.Read()reader.GetValues(values);label_name.Tex
15、t=values1.ToString();label_type.Text=values2.ToString();label_address.Text=values3.ToString()+values4.ToString()+values5.ToString();label_person.Text=values6.ToString();reader.Close();conn.Close();运行程序,显示如下:步骤5:选中大气污染扩散分析窗口中所有的RadioButton按钮,在radioButton1中响应其Click事件,即可以实现对所有RadioButton控件的Click事件的响应。p
16、rivatevoidradioButton1_Click(objectsender,EventArgse)RadioButtonradioButton=(RadioButton)sender;radius=Convert.ToInt32(radioButton.Text);/将radioButton的Text值赋给radius变量步骤6:响应btnOK的Click事件,实现单源大气污染源的高斯扩散模拟。using;privatevoidbtnOK_Click(objectsender,EventArgse)doublespeed;tryspeed=);catch(Exceptione1)Mes
17、sageBox.Show(风速填写错误,请查看!);return;if(speed0)MessageBox.Show(风速填写错误,请查看!);return;switch(radius)/根据地面风速和太阳辐射等级计算大气稳定度case-2:if(speed2.9&speed4.9)atmosphereStability=4;break;case-1:if(speed2.9)atmosphereStability=4;break;case0:atmosphereStability=4;break;case1:if(speed1.9&speed4.9)atmosphereStability=4;
18、break;case2:if(speed1.9&speed4.9&speed5.9)atmosphereStability=4;break;case3:if(speed2.9&speed4.9&speed5.9)atmosphereStability=4;break;/设定扩散参数if(height.Text=)MessageBox.Show(请设置释放高度参数!);return;if()=50)Py=diffusedParameter50atmosphereStability-1.Py;Pz=diffusedParameter50atmosphereStability-1.Pz;Qy=dif
19、fusedParameter50atmosphereStability-1.Qy;Qz=diffusedParameter50atmosphereStability-1.Qz;if()=100)Py=diffusedParameter100atmosphereStability-1.Py;Pz=diffusedParameter100atmosphereStability-1.Pz;Qy=diffusedParameter100atmosphereStability-1.Qy;Qz=diffusedParameter100atmosphereStability-1.Qz;if()=180)Py
20、=diffusedParameter180atmosphereStability-1.Py;Pz=diffusedParameter180atmosphereStability-1.Pz;Qy=diffusedParameter180atmosphereStability-1.Qy;Qz=diffusedParameter180atmosphereStability-1.Qz;/获取污染源ILayerpLayer=parentForm.GetLayerByname(comboBox_layer.Text);if(null=pLayer)MessageBox.Show(没有找到+comboBox
21、_layer.Text+图层!);return;if(label_name.Text=)MessageBox.Show(请选择污染源!);return;ITableptable=(ITable)pLayer;IQueryFilterqueryFilter=newQueryFilterClass();queryFilter.WhereClause=名称=+label_name.Text+;ICursorcursor=ptable.Search(queryFilter,true);IRowprow=cursor.NextRow();intindex=ptable.FindField(shape);
22、IPointwuranyuan=(IPoint)prow.get_Value(index);/设置边界范围envelope.XMax=wuranyuan.X+5000;envelope.XMin=wuranyuan.X-5000;envelope.YMax=wuranyuan.Y+5000;envelope.YMin=wuranyuan.Y-5000;/采样点图层IEnvelopepEnvelope=newEnvelopeClass();IPointpPoint=new();IPolygonpPolygon=GetInterpolateArea();/根据风向确定污染影响的可能范围,该函数的原
23、理实现在后面有说明IPointCollectionpPointCollection=(IPointCollection)pPolygon;/根据确定的多边形生成采样点集,IPointCollection是一个点集接口,IPolygon、IPointCollection接口都位于Geometry命名空间中,通过两者之间的强制转换,可以根据Polygon生成相应的点集对象。PointFpPointF=newPointFpPointCollection.PointCount;for(intnum=0;numpPointF.Length;num+)pPointFnum.X=(float)(IPoint
24、)pPointCollection.get_Point(num).X;pPointFnum.Y=(float)(IPoint)pPointCollection.get_Point(num).Y;PolygonClipPolygon=newPolygon(pPointF);pPolygon.QueryEnvelope(pEnvelope);/将pPolygon的QueryEnelope赋给pEnvelop/为即将生成的采样点矢量图层,添加属性字段。包括一个FID字段、一个c字段IFieldsPropertyFields=newFieldsClass();IFieldsEditFieldsEdit
25、=(IFieldsEdit)PropertyFields;IFieldField=newFieldClass();IFieldEditFieldEdit=(IFieldEdit)Field;FieldEdit.Name_2=FID;FieldEdit.AliasName_2=FID;FieldEdit.Type_2=esriFieldType.esriFieldTypeOID;FieldsEdit.AddField(FieldEdit);Field=newFieldClass();FieldEdit=(IFieldEdit)Field;FieldEdit.Name_2=c;FieldEdit.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AE 大气 扩散 模型 算法
限制150内