CAE軟件研發(fā)的一些思考(5)--系統(tǒng)的開(kāi)發(fā)求解器

2016-09-03  by:CAE仿真在線  來(lái)源:互聯(lián)網(wǎng)

目前國(guó)內(nèi)大部分求解器,以及開(kāi)源求解器的開(kāi)發(fā)仍然停留在小作坊式的水平,開(kāi)發(fā)出來(lái)的程序能實(shí)現(xiàn)基本功能,但在穩(wěn)定性,擴(kuò)展性,測(cè)試性,維護(hù)性等方面差強(qiáng)人意,很難達(dá)到商業(yè)應(yīng)用的要求。
嚴(yán)格意義上來(lái)講,求解器的開(kāi)發(fā)也屬于軟件開(kāi)發(fā)的范疇,理應(yīng)用軟件工程的思想來(lái)指導(dǎo),但由于求解器本身有其特殊性,開(kāi)發(fā)流程也不適合完全按照一般軟件開(kāi)發(fā)流程來(lái)做。

本文結(jié)合自己開(kāi)發(fā)經(jīng)驗(yàn),討論一下如何系統(tǒng)的開(kāi)發(fā)求解器。求解器開(kāi)發(fā)可以分為三個(gè)階段:
1.原型開(kāi)發(fā);
2.迭代開(kāi)發(fā);
3.維護(hù)開(kāi)發(fā);

1. 原型開(kāi)發(fā)
這階段主要完成以下任務(wù):
1.1.技術(shù)選型;
確定要實(shí)現(xiàn)的功能,使用的開(kāi)發(fā)語(yǔ)言,開(kāi)發(fā)環(huán)境和工具。目前大部分求解器開(kāi)發(fā)使用C/C++/Fortran語(yǔ)言

1.2 實(shí)現(xiàn)基本功能;
要能對(duì)最簡(jiǎn)單的例子進(jìn)行計(jì)算,并得到正確的結(jié)果。需要做的工作:
  • 能生成標(biāo)準(zhǔn)求解器的輸入文件,比如Nastran,Ansys,HFSS,Fluent等的求解器輸入文件,例子的計(jì)算結(jié)果要與這些標(biāo)準(zhǔn)求解器計(jì)算的結(jié)果做比較。
  • 標(biāo)準(zhǔn)求解器輸入文件的解析器。用來(lái)解析輸入文件,作為開(kāi)發(fā)求解器的輸入數(shù)據(jù)。
  • 比較標(biāo)準(zhǔn)求解器的計(jì)算結(jié)果和開(kāi)發(fā)的求解器結(jié)果。
這階段的主要目的是保證算法的正確性。開(kāi)發(fā)時(shí)為了提高效率,可以借助Matlab軟件: 用Matlab完成原型的開(kāi)發(fā),直到計(jì)算結(jié)果正確。在此基礎(chǔ)上再將Matlab翻譯成 C++/Fortran。這樣在早起可以將精力集中在算法驗(yàn)證上。需要注意的是盡量進(jìn)行模塊化開(kāi)發(fā)。

1.3. 完成求解器原型; 
這里需要介紹一下Matlab軟件,基本介紹看百度,主要說(shuō)一下Matlab混合編程。Matlab有工具是可以把M文件翻譯成C++的,不推薦。主要介紹如何把C++/Fortran文件編譯成Matlab文件。這個(gè)功能很有用,當(dāng)進(jìn)行模塊化開(kāi)發(fā)的時(shí)候,C++/Fortran完成模塊功能,然后編譯成Mex文件,作為Matlab的模塊使用。這樣可以逐步將Matlab翻譯成C++/Fortran,提高開(kāi)發(fā)效率。

小結(jié):
1>需要開(kāi)發(fā)一種標(biāo)準(zhǔn)求解器文件的解析器。
2>需要熟練使用標(biāo)準(zhǔn)CAE軟件進(jìn)行仿真,熟悉求解器輸入文件和計(jì)算結(jié)果
4>開(kāi)發(fā)的求解器要能正確計(jì)算經(jīng)典的Benchmark例子

原型開(kāi)發(fā)決定了開(kāi)發(fā)的可行性,如果這階段的任務(wù)無(wú)法完成,需要加強(qiáng)研發(fā)的投入。

2. 迭代開(kāi)發(fā)
這階段主要完成以下任務(wù):
1. 完善新功能
在完成原型的基礎(chǔ)上,添加新功能,比如支持新的單元類型,支持新的荷載邊界,處理更復(fù)雜的模型等。
2. 保證計(jì)算準(zhǔn)確性基礎(chǔ)上,進(jìn)一步提高求解器的質(zhì)量
可靠性:正確的模型,都能給出可靠的計(jì)算結(jié)果;
魯棒性:任何例子都能給出正確的反饋;
穩(wěn)定性:大規(guī)模計(jì)算時(shí),程序能保持穩(wěn)定;
效率:計(jì)算速度,內(nèi)存消耗。考慮GPU,并行計(jì)算;
3. 完善求解器的前處理和后處理:
有限元模型檢查;
網(wǎng)格質(zhì)量檢查;
仿真結(jié)果分析;
4. 創(chuàng)建更多經(jīng)典的Benchmark例子進(jìn)行測(cè)試。

小結(jié):
迭代開(kāi)發(fā)階段的主要目的是完善求解器,建立規(guī)范化的開(kāi)發(fā)流程:
1> 確定技術(shù)選型,比如線性方程組庫(kù)的使用,并行計(jì)算,GPU等
2> 完善前處理和后處理
3> 建立更多經(jīng)典Benchmark例子,例子的選擇需要 有經(jīng)驗(yàn)的工程師的參與
4> 確定求解器輸入文件格式
5> 定期發(fā)布版本以供測(cè)試

3. 維護(hù)開(kāi)發(fā)
這階段主要完成任務(wù)有:
1. 測(cè)試實(shí)際工程的例子,處理實(shí)際工程中所碰到的問(wèn)題
實(shí)際工程的模型要遠(yuǎn)比經(jīng)典模型復(fù)雜,求解器需要更多的功能支持計(jì)算實(shí)際的模型。
2. 建立回歸測(cè)試機(jī)制
回歸測(cè)試是求解器開(kāi)發(fā)中非常重要的一環(huán),通常求解器修改后,需要驗(yàn)證是否對(duì)以前的case有影響,這就需要建立回歸測(cè)試機(jī)制,通常用一種腳本語(yǔ)言(Python,Perl)開(kāi)發(fā)回歸測(cè)試程序。每次修改代碼后,運(yùn)行程序,比對(duì)修改后與修改前的計(jì)算結(jié)果。

可以看出要開(kāi)發(fā)出高質(zhì)量的求解器,既要熟悉求解器本身的算法,又要了解軟件開(kāi)發(fā)流程,更要熟悉軟件工程中的架構(gòu),復(fù)用,重構(gòu),模塊等思想,對(duì)開(kāi)發(fā)人員提出了更高的要求。


開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:CAE軟件研發(fā)的一些思考(5)--系統(tǒng)的開(kāi)發(fā)求解器 有限元技術(shù)培訓(xùn) 有限元仿真理論研究 有限元基礎(chǔ)理論公式 能量守恒質(zhì)量守恒動(dòng)量守恒一致性方程 有限體積法 什么是有限元 有限元基礎(chǔ)知識(shí) 有限元軟件下載 有限元代做 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com