國產CAE軟件產品定位及系統的開發求解器
瀏覽:3450 收藏:3
本文主要從軟件開發角度來分析CAE軟件產品的定位。這里所指的CAE軟件 仍然是指用有限元,有限體積,差分等方法進行仿真的軟件。數據管理,云計算之類不包含在內。
比如 Ansys/Nastran/abaqus/Comsol
不再多舉例
根據從易到難分為以下幾種:
1. 基于其它CAE軟件的二次開發
利用CAE軟件提供的命令流腳本,腳本語言 開發功能模塊
典型的應用是在Ansys里APDL建立界面,
Abaqus里用Python編寫腳本
2. 基于
其它CAE軟件二次開發(獨立界面)
開發獨立于CAE軟件的GUI,在GUI中輸入參數,將輸入的參數組織成命令流或者腳本,然后導入到CAE軟件里,在CAE軟件里進行建立幾何模型,劃分網格,建立有限元模型以及仿真,結果可以在CAE里查看,也可以在開發的GUI里查看。
這類開發的特點是 需要額外的開發工具開發GUI,運行時后臺調用其它CAE軟件,讓用戶感覺是獨立的軟件。
典型的應用:
<1 用QT建立界面,接收用戶輸入參數,然后生成APDL命令流,導入Ansys進行建模仿真。
<2 Isight 調用生成的 Ansys *.cdb模型進行仿真優化。
<3 利用VBscript腳本建立模型 導入到HFSS中進行仿真。
3. 開發專業前后處理器,調用其它CAE軟件求解器:
通用CAE軟件一個最大的短處是建模繁瑣。這類軟件在前后處理上提供了相當的便利,通常能獨立的快速創建編輯幾何模型,網格,有限元模型,提供模板等功能。有限元模型生成好以后輸出相應的求解器文件供第三方軟件求解。
典型應用:
SimLab
/Ansa/其它專業CAE軟件。
4. 某一類型/行業一攬子解決方案
在第三類基礎上提供求解器。同時提供更專業的一攬子解決方案。比如專門針對渦輪發動機,提供熱,結構,轉子動力,振動,流體等全面求解方案,提供快速幾何建模,有限元建模,優化設計,等功能。這類軟件客戶針對性強,集中解決某一領域或某一行業的問題,是以后CAE軟件研發的趨勢。
典型的應用:
LS-dyna: 碰撞分析的標準。
Fluent:流體仿真的標準。
Midas/PKPM: 建筑行業。
HFSS: 電子行業高頻仿真的標準。
5. 大型通用CAE軟件
目前國內科研院校主要以第一,二類開發為主。CAE的核心模塊比如幾何建模,網格劃分,有限元模型,求解器都沒有涉及到(這里的求解器是
可以商用的求解器,
開源軟件拿來改改的不算)。
第三,四類 涉及到了CAD/CAE軟件的核心功能,尤其是第四類CAE產品,是以后CAE軟件發展的方向:專業化,傻瓜化,one-stop服務,當然開發投入成本也高。
第五類產品的研發像OS,需要國家從戰略上的投入
目前國內大部分求解器,以及開源求解器的開發仍然停留在小作坊式的水平,開發出來的程序能實現基本功能,但在穩定性,擴展性,測試性,維護性等方面差強人意,很難達到商業應用的要求。嚴格意義上來講,求解器的開發也屬于軟件開發的范疇,理應用軟件工程的思想來指導,但由于求解器本身有其特殊性,開發流程也不適合完全按照一般軟件開發流程來做。
目前國內大部分求解器,以及開源求解器的開發仍然停留在小作坊式的水平,開發出來的程序能實現基本功能,但在穩定性,擴展性,測試性,維護性等方面差強人意,很難達到商業應用的要求。
嚴格意義上來講,求解器的開發也屬于軟件開發的范疇,理應用軟件工程的思想來指導,但由于求解器本身有其特殊性,開發流程也不適合完全按照一般軟件開發流程來做。
結合自己開發經驗,討論一下如何系統的開發求解器。求解器開發可以分為三個階段:
1.原型開發;
2.迭代開發;
3.維護開發;
1. 原型開發
這階段主要完成以下任務:
1.1.技術選型;
確定要實現的功能,使用的開發語言,開發環境和工具。目前大部分求解器開發使用C/C++/Fortran語言
1.2 實現基本功能;
要能對最簡單的例子進行計算,并得到正確的結果。需要做的工作:
能生成標準求解器的輸入文件,比如Nastran,Ansys,HFSS,Fluent等的求解器輸入文件,例子的計算結果要與這些標準求解器計算的結果做比較。
標準求解器輸入文件的解析器。用來解析輸入文件,作為開發求解器的輸入數據。
比較標準求解器的計算結果和開發的求解器結果。
這階段的主要目的是保證算法的
正確性
。開發時為了提高效率,可以借助Matlab軟件: 用Matlab完成原型的開發,直到計算結果正確。在此基礎上再將Matlab翻譯成 C++/Fortran。這樣在早起可以將精力集中在算法驗證上。需要注意的是盡量進行模塊化開發。
1.3. 完成求解器原型;
這里需要介紹一下Matlab軟件,基本介紹看百度,主要說一下Matlab混合編程。Matlab有工具是可以把M文件翻譯成C++的,不推薦。主要介紹如何把C++/Fortran文件編譯成Matlab文件。這個功能很有用,當進行模塊化開發的時候,C++/Fortran完成模塊功能,然后編譯成Mex文件,作為Matlab的模塊使用。這樣可以逐步將Matlab翻譯成C++/Fortran,提高開發效率。
小結:
1>需要開發一種標準求解器文件的解析器。
2>需要熟練使用標準CAE軟件進行仿真,熟悉求解器輸入文件和計算結果
4>開發的求解器要能正確計算經典的Benchmark例子
原型開發決定了開發的可行性,如果這階段的任務無法完成,需要加強研發的投入。
2. 迭代開發
這階段主要完成以下任務:
1. 完善新功能
在完成原型的基礎上,添加新功能,比如支持新的單元類型,支持新的荷載邊界,處理更復雜的模型等。
2. 保證計算準確性基礎上,進一步提高求解器的質量
可靠性:正確的模型,都能給出可靠的計算結果;
魯棒性:任何例子都能給出正確的反饋;
穩定性:大規模計算時,程序能保持穩定;
效率:計算速度,內存消耗。考慮GPU,并行計算;
3. 完善求解器的前處理和后處理:
有限元模型檢查;
網格質量檢查;
仿真結果分析;
4. 創建更多經典的Benchmark例子進行測試。
小結:
迭代開發階段的主要目的是完善求解器,建立規范化的開發流程:
1> 確定技術選型,比如線性方程組庫的使用,并行計算,GPU等
2> 完善前處理和后處理
3> 建立更多經典Benchmark例子,例子的選擇需要 有經驗的工程師的參與
4> 確定求解器輸入文件格式
5> 定期發布版本以供測試
3. 維護開發
這階段主要完成任務有:
1. 測試實際工程的例子,處理實際工程中所碰到的問題
實際工程的模型要遠比經典模型復雜,求解器需要更多的功能支持計算實際的模型。
2. 建立回歸測試機制
回歸測試是求解器開發中非常重要的一環,通常求解器修改后,需要驗證是否對以前的case有影響,這就需要建立回歸測試機制,通常用一種腳本語言(Python,Perl)開發回歸測試程序。每次修改代碼后,運行程序,比對修改后與修改前的計算結果。
可以看出要開發出高質量的求解器,既要熟悉求解器本身的算法,又要了解軟件開發流程,更要熟悉軟件工程中的架構,復用,重構,模塊等思想,對開發人員提出了更高的要求。
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
7
3




















