针对氡气及其子体运移机制的研究是开展氡气研究的基础。近年来,对氡气运移机制提出了新的研究角度:团簇、微粒等方面.经反复论证,团簇理论不断趋于成熟,但研究手段较为落后,仅通过通用仿真软件进行数据处理,针对性差。因此,计算机仿真技术在氡气运移研究领域中存在技术空白。本文利用模拟仿真技术应用到氡气运移、分布等相关研究中,对研究系统的结构、功能和行为进行动态的比较和模仿,提高研究技术的效用性和安全性。
团簇是由几个乃至上千个原子、分子或离子通过物理或化学结合力组成的相对稳定的微观或亚微观聚集体,其物理和化学性质随所含的原子数目而变化。团簇是材料尺度纳米材料的一个概念。团簇的空间尺度是几埃至几百埃的范围,用无机分子来描述显得太大,用小块固体描述又显得太小,许多性质既不同于单个原子分子,又不同于固体和液体,也不能用两者性质的简单线性外延或内插得到。因此,人们把团簇看成是介于原子、分子与宏观固体物质之间的物质结构的新层次,是各种物质由原子分子向大块物质转变的过渡状态,或者说,代表了凝聚态物质的初始状态。
1 系统概述
该系统的开发借助计算机仿真学、图形学,结合软接口设计的原则,完成了系统功能模块的开发。系统功能模块分为文件管理、图形显示、数值分析与模拟、窗口管理、帮助五个部分。系统设计过程中统筹考虑系统功能,结合软件工程[4]设计原理,采用模块化设计思路,完成系统设计。
1.1 文件管理
文件管理模块主要用于系统数据管理、数据通讯等功能。系统数据将以文本的形式进行管理,该文本可在其他文本编辑器(例如记事本)或电子表格(例如EXCEL)中打开,并通过数据导入、数据导出功能模块完成数据通讯。
1.2 图形显示
图形显示功能模块提供二维曲线显示和三维曲线显示。二维曲线显示包括:射气浓度随距离分布、射气浓度随时间分布、不同方向上离散点的计数对比规律的描述。三维曲线显示包括:射气浓度等高线描述。
1.3 数值模拟
数值模拟功能模块用于模拟未知参量、模拟结果的分析和整理、确定修正系数等。此外,利用理论模型进行数值模拟,得到的模拟值和实验值进行分析,进而完成理论模型的论证。模拟界面如图1所示。
2 关键技术算法设计
在系统设计过程中采用面向对象的设计思路,自顶向下进行功能抽象,通过软件分层结合软接口调用进行信息通讯,保证模块的独立性、程序的可重用性。在设计过程中,涉及到的关键技术及模块有:数据流管理模块、数据值到曲线转换模块及曲线显示模块。
2.1 数据流管理模块
数据流(data stream)初是通信领域使用的概念,代表传输中所使用的信息的数字编码信号序列。然而,我们所提到的数据流概念与此不同。这个概念初在1998年由Henzinger在文献87中提出,他将数据流定义为"只能以事先规定好的顺序被读取的数据的一个序列".数据的持续到达意味着数据量可能是无限的。而且,对数据进行处理的结果不会是终的结果,因为数据还会不断地到达。因此,对数据流的查询的结果往往不是性而是持续的,即随着底层数据的到达而不断返回的结果。
2.1.1 模块分析及流程设计
"数据流管理模块"主要完成数据流通讯,系统根据设计需要提供四类不同的操作:直接导入数据;根据导入的数据在相应对话框显示;将导入的数据值转化成二维曲线显示;将导入的数据值转化成三维曲面显示。数据导出是导入的逆过程。
算法步骤如下:系统读数据后经数据预处理,然后判断操作类型(包含四种操作类型),根据不同的操作类型调用不同模块接口。
2.1.2 关键算法实现
程序采用模块化设计思路,通过两个"类对象"完成系统设计:Class1"类对象"读取数据流并进行数值换算、display"窗体类对象"提供图形显示设计工作。
功能函数:openfile()打开文件夹、class.ndclass.Disfun()数据过滤、ndclass.ndzb()特征值提取、 getndzb() 等高浓度拟合、class.ndclass.Nhfun()数据平滑、getmaxclass1.DisData()数据预处理等函数,以及其他数值处理、返回函数编写在Class1"类对象"中,以提供不同的模块调用。
功能函数:OnPaint()绘制、MyPaint()重载、getkd()坐标转换、drawqx()、曲线显示等函数,以及其他系统辅助函数编写在display窗体"类对象" 中。部分代码如下:
protected override void OnPaint(PaintEventArgs e)
{ base.OnPaint (e);
datamaxx = getmaxclass1.getmaxnum (data1);
datamaxy = getmaxclass1.getmaxnum (data2);
ndclass1.ndzb(DataFileName,data1,data2,data3);
k = ndclass1.rei ();
getkd(datamaxx,datamaxy);
…
2.2 数据值到曲线转换模块
2.2.1模块分析及流程设计
流程设计如下:系统首先读数据,判断数据的有效性之后存入相应的数组列表中。然后系统进行数据预处理,从原始数据中提取特征信息,经过数据平滑之后,将其转换成标准格式。同时按坐标数据、连接信息、浓度特征三部分分类存放后导入系统绘制曲线。
数据值到三维曲线转化模块与二维曲线绘制有着异曲同工之妙,不同在于三维等高线的绘制过程中涉及到的浓度等高点的确定,因此,程序将加入"数据拟合"功能模块。从而,大大缩短开发周期。数据值到三维曲线转化模块流程设计如图2所示。
2.2.2 关键算法实现
数据值到曲线的转换模块主要应用在数据流通信部分,完成的工作是将读入的数据值转化成图像形式显示在屏幕上。根据转换曲线类别的不同,操作执行的流程也有所不同。因此,需要进行判断操作,选择不同的模块入口。程序设计的部分代码如下:
public void ndzb(string s ,double[] datax,double[] datay,double[] datan)
{ Class1.readerclass readerclass = new readerclass ();
射气运移模拟系统。Class1.getmaxclass getmaxclass = new getmaxclass ();
maxn = getmaxclass.getmaxnum (datan);
AnalNDFuncion(maxn);
for(xhblj = 0;xhblj<k;xhblj++)
{ if( datax[xhblj] > 0 & datay[xhblj] == 0 )
{ area1.Add ( datax[xhblj] );}…
if(area1.Count >0)
…
2.3曲线显示模块
2.3.1模块设计分析及流程设计
曲线显示模块为用户提供直观的图形界面显示,包含二维图形显示、三维图形显示模块。曲线显示模块设计中,将根据"数据值到曲线转换模块"生成的有效特征数据值进行绘制。由于GDI+坐标系统与常用的笛卡尔坐标系不同,因此系统提供了坐标变换模块。二维曲线同三维曲线的设计理念相似,只是在绘制技巧中有所不同。现以三维曲线绘制流程为例,流程如图3所示。
2.3.2 关键算法实现
曲线绘制显示功能主要采用了GDI+图形设备接口技术完成曲线绘制要求,系统通过Graphics类对象提供完备的绘制方法和属性,部分代码如下:
if(VerOrLevbool==0)//竖直方向的浓度分布;
{ PMx = tranx / cursorx *(PMxArr[i]-stapot)+40+tranx;
PMy = VerNDLineCla.rePMY (PMDisArr); }
else if (VerOrLevbool==1)//水平上向上的浓度分布;
{ PMx = LevNDLineCla.rePMX (PMDisArr); … }}
在绘制过程中主要调用GDI+ System.Drawing类中的:Brush、Font、Graphics、Pen、Region等类,以及Graphics 类的DrawLine、DrawString等方法,绘制出氡及其子体二维和三维分布曲线。
本文以计算机模拟作为氡及其子体运移机制研究的一种新手段和工具,模拟分析了氡及其子体运移的数学模型,获得了有参考价值的分析结果。该结论对揭示团簇理论的科学性具有重要意义,同时对揭示地气向上运移、气溶胶的形成与运移以及团簇研究都具有积极和深远的影响。
模拟技术提供的预见性,可预测系统的特性、外作用的影响,可以更直观地为团簇理论提供有力的技术支持,并为氡运移研究提供新的研究途径。这种研究思路充分利用计算机的丰富资源,提高研发的安全性,而且具有经济、可靠、易升级等优点。因此,计算机模拟引入射气分布规律研究是一个必然的趋势。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。