久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 多物理場仿真 2022-03-22

目前國內(nèi)大部分求解器,,以及開源求解器的開發(fā)仍然停留在小作坊式的水平,,開發(fā)出來的程序能實現(xiàn)基本功能,,但在穩(wěn)定性,擴展性,,測試性,,維護性等方面差強人意,很難達到商業(yè)應(yīng)用的要求,。

嚴格意義上來講,,求解器的開發(fā)也屬于軟件開發(fā)的范疇,理應(yīng)用軟件工程的思想來指導(dǎo),,但由于求解器本身有其特殊性,,開發(fā)流程也不適合完全按照一般軟件開發(fā)流程來做。

本文結(jié)合自己開發(fā)經(jīng)驗,,討論一下如何系統(tǒng)的開發(fā)求解器,。求解器開發(fā)可以分為三個階段:

1.原型開發(fā);

2.迭代開發(fā),;

3.維護開發(fā),;

1. 原型開發(fā)

這階段主要完成以下任務(wù):

1.1.技術(shù)選型;

確定要實現(xiàn)的功能,,使用的開發(fā)語言,,開發(fā)環(huán)境和工具。目前大部分求解器開發(fā)使用C/C++/Fortran語言

1.2 實現(xiàn)基本功能,;

要能對最簡單的例子進行計算,,并得到正確的結(jié)果。需要做的工作:

  • 能生成標準求解器的輸入文件,,比如Nastran,,Ansys,,HFSS,,F(xiàn)luent等的求解器輸入文件,例子的計算結(jié)果要與這些標準求解器計算的結(jié)果做比較,。

  • 標準求解器輸入文件的解析器,。用來解析輸入文件,作為開發(fā)求解器的輸入數(shù)據(jù),。

  • 比較標準求解器的計算結(jié)果和開發(fā)的求解器結(jié)果,。

這階段的主要目的是保證算法的正確性。開發(fā)時為了提高效率,,可以借助Matlab軟件: 用Matlab完成原型的開發(fā),,直到計算結(jié)果正確,。在此基礎(chǔ)上再將Matlab翻譯成 C++/Fortran。這樣在早起可以將精力集中在算法驗證上,。需要注意的是盡量進行模塊化開發(fā),。

1.3. 完成求解器原型; 

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

小結(jié):

1>需要開發(fā)一種標準求解器文件的解析器,。

2>需要熟練使用標準CAE軟件進行仿真,熟悉求解器輸入文件和計算結(jié)果

4>開發(fā)的求解器要能正確計算經(jīng)典的Benchmark例子

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

2. 迭代開發(fā)

這階段主要完成以下任務(wù):

1. 完善新功能

在完成原型的基礎(chǔ)上,,添加新功能,,比如支持新的單元類型,支持新的荷載邊界,,處理更復(fù)雜的模型等,。

2. 保證計算準確性基礎(chǔ)上,進一步提高求解器的質(zhì)量

可靠性:正確的模型,,都能給出可靠的計算結(jié)果,;

魯棒性:任何例子都能給出正確的反饋;

穩(wěn)定性:大規(guī)模計算時,,程序能保持穩(wěn)定,;

效率:計算速度,內(nèi)存消耗,??紤]GPU,并行計算,;

3. 完善求解器的前處理和后處理:

有限元模型檢查,;

網(wǎng)格質(zhì)量檢查,;

仿真結(jié)果分析;

4. 創(chuàng)建更多經(jīng)典的Benchmark例子進行測試,。

小結(jié):

迭代開發(fā)階段的主要目的是完善求解器,,建立規(guī)范化的開發(fā)流程:

1> 確定技術(shù)選型,比如線性方程組庫的使用,,并行計算,,GPU等

2> 完善前處理和后處理

3> 建立更多經(jīng)典Benchmark例子,例子的選擇需要 有經(jīng)驗的工程師的參與

4> 確定求解器輸入文件格式

5> 定期發(fā)布版本以供測試

3. 維護開發(fā)

這階段主要完成任務(wù)有:

1. 測試實際工程的例子,,處理實際工程中所碰到的問題

實際工程的模型要遠比經(jīng)典模型復(fù)雜,,求解器需要更多的功能支持計算實際的模型。

2. 建立回歸測試機制

回歸測試是求解器開發(fā)中非常重要的一環(huán),,通常求解器修改后,,需要驗證是否對以前的case有影響,這就需要建立回歸測試機制,,通常用一種腳本語言(Python,Perl)開發(fā)回歸測試程序,。每次修改代碼后,運行程序,,比對修改后與修改前的計算結(jié)果,。

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

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多