有大神來分享一下學習deal-II的經驗嗎?

有限元軟體


我在自己博客里寫了一些學習deal.II的學習過程,交流一下,共同進步。

見:http://qixinbo.info/tags/deal-II/


正在學習dealii,一開始是從coursera上The Finite Element Method for Problems in Physics這門公開課接觸它的,學習資源除了樓上的翻譯外,主要依靠dealii官網的tutorials和Wolfgang"s lectures。

dealii的建模過程可以從tutorials裡面的run()函數實現看出來 (和一般的有限元分析軟體建模過程是一樣的):

依次是:

1. make_grid(); //可以通過dealii的函數建立幾何模型再劃分網格並細化網格,也可以通過GridIn類導入網格並細化.

2. setup_system(); //這一步要做的是在前一步的基礎上給模型分配自由度(具體就是給每個網格和網格節點編號之類的,通過DofHandler類來實現),有了編號那麼global stiffness matrix這個稀疏矩陣的結構就可以確定下來了(矩陣哪些地方是0,哪些地方有值,通過

DynamicSparsityPattern 類和SparsityPattern 類來實現),以及global force vector和solution vector的size也可以在這一步定義。

3. assemble_system (); //這一步所做的就是給稀疏矩陣和向量的相應位置賦值並對邊界條件進行相應的處理:對element挨個循環,計算element stiffness matrix和element force vector的值然後再加到 global stiffness matrix和global force vector的對應位置去,其中具體的計算高斯積分和雅各比等可以通過QGauss類和FEValues類實現;同時判斷該單元是否含有Neumann邊界條件並計算邊界積分;然後再對整個系統施加Dirichlet 邊界條件。

4. solve(); //整個方程組建好後,下一步就剩求解這個方程組。dealii的tutorials裡面有具體介紹這些求解方法。

5. 之後就是輸出結果。當然dealii還可以根據計算結果對網格進行refinement,然後再重新計算。

這應該是dealii建模必須有的幾步吧,對於vector value problems和time dependent problems等問題都是在這基礎上延伸。


推薦閱讀:

國內的有限元產品有競爭力嗎?需求大不?有點懷疑學習有限元理論的用處,像Ansys, Abaqus已經做的很成熟了
GPGPU通用计算应用如何了?
在Ansys,abaqus有限元公司工作是怎樣的體驗?
平面剛架單元相關問題,急求?

TAG:有限元分析FEA |