摘 要: 基于.net開發平臺,借助C#語言,利用軟構件技術完成了氡及其子體運移仿真軟件開發。討論了仿真系統的軟件實現過程,簡述了系統的功能模塊及關鍵技術實現。實現了氡及其子體運移機制研究的計算機化。
關鍵詞: .net;運移; 計算機仿真; 團簇
針對氡氣及其子體運移機制的研究是開展氡氣研究的基礎。近年來,對氡氣運移機制提出了新的研究角度:團簇、微粒等方面[1-2]。經反復論證,團簇理論不斷趨于成熟,但研究手段較為落后,僅通過通用仿真軟件進行數據處理,針對性差。因此,計算機仿真技術在氡氣運移研究領域中存在技術空白。本文利用模擬仿真技術應用到氡氣運移、分布等相關研究中,對研究系統的結構、功能和行為進行動態的比較和模仿,提高研究技術的效用性和安全性。
1 系統概述
該系統的開發借助計算機仿真學、圖形學,結合軟接口設計的原則[3],完成了系統功能模塊的開發。系統功能模塊分為文件管理、圖形顯示、數值分析與模擬、窗口管理、幫助五個部分。系統設計過程中統籌考慮系統功能,結合軟件工程[4]設計原理,采用模塊化設計思路,完成系統設計。
1.1 文件管理
文件管理模塊主要用于系統數據管理、數據通訊等功能。系統數據將以文本的形式進行管理,該文本可在其他文本編輯器(例如記事本)或電子表格(例如EXCEL)中打開,并通過數據導入、數據導出功能模塊完成數據通訊。
1.2 圖形顯示
圖形顯示功能模塊提供二維曲線顯示和三維曲線顯示。二維曲線顯示包括:射氣濃度隨距離分布、射氣濃度隨時間分布、不同方向上離散點的計數對比規律的描述。三維曲線顯示包括:射氣濃度等高線描述。
1.3 數值模擬
數值模擬功能模塊用于模擬未知參量、模擬結果的分析和整理、確定修正系數等。此外,利用理論模型進行數值模擬,得到的模擬值和實驗值進行分析,進而完成理論模型的論證。模擬界面如圖1所示。
2 關鍵技術算法設計
在系統設計過程中采用面向對象的設計思路,自頂向下進行功能抽象,通過軟件分層結合軟接口調用進行信息通訊,保證模塊的獨立性、程序的可重用性。在設計過程中,涉及到的關鍵技術及模塊有:數據流管理模塊、數據值到曲線轉換模塊及曲線顯示模塊。
2.1 數據流管理模塊
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等方法,繪制出氡及其子體二維和三維分布曲線。
本文以計算機模擬作為氡及其子體運移機制研究的一種新手段和工具,模擬分析了氡及其子體運移的數學模型,獲得了有參考價值的分析結果。該結論對揭示團簇理論的科學性具有重要意義,同時對揭示地氣向上運移、氣溶膠的形成與運移以及團簇研究都具有積極和深遠的影響。
模擬技術提供的預見性,可預測系統的特性、外作用的影響,可以更直觀地為團簇理論提供有力的技術支持,并為氡運移研究提供新的研究途徑。這種研究思路充分利用計算機的豐富資源,提高研發的安全性,而且具有經濟、可靠、易升級等優點。因此,計算機模擬引入射氣分布規律研究是一個必然的趨勢。
參考文獻
[1] 樂仁昌. 氡及其子體的釋放和運移規律及機理研究[D]. 成都:成都理工大學博士學位論文.2002.5;
[2] 賈文懿,方方,周蓉生.氡及其子體運移規律與機理研究[J]. 核技術,2000,23(3):169-175.
[3] 呂云翔,王晰鵬編著.軟件工程.北京:人民郵電出版社,2009.
[4] 肖丁,吳建林,周春燕,等編著.軟件工程模型與方法.北京:北京郵電大學出版社,2008.