元素編號體系與形狀函數函式庫¶
在形狀函數與有限元素近似中導入的形狀函數 \(N_\alpha^e(\boldsymbol{r})\),對每一種元素類型都有其特定形式。本章使用三位數元素類型編號,整理 FrontISTR 所提供的元素群組,並說明用於統一處理各種元素的形狀函數函式庫介面。三維實體元素的具體自然座標系與形狀函數,以及二次元素的中間節點排序轉換,請參閱三維實體元素的形狀函數;元素類型的選擇指引則請參閱元素函式庫(功能)。
元素分類與命名規則¶
FrontISTR 的元素類型以三位數編號識別。各位數的意義如下。
- 第一位(元素群組):1 = 線元素/桿元素,2 = 平面元素,3 = 實體元素,5 = 介面元素,6 = 梁元素,7 = 殼元素。
- 第二位(基本形狀):區分元素群組內的幾何形狀(三角形、四邊形、四面體、稜柱或六面體)。
- 第三位(內插階次):1 = 一次(僅角節點),2 = 二次(包含中間節點)。例外是二節點桿元素,其編號為 301。
下表依元素群組列出所提供的元素。
| 元素群組 | 元素類型 | 節點數 | 說明 |
|---|---|---|---|
| 線元素 | 111 | 2 | 2 節點連桿元素(不可用於應力分析) |
| 112 | 3 | 3 節點連桿元素(不可用於應力分析) | |
| 平面元素 | 231 | 3 | 3 節點一次三角形元素 |
| 232 | 6 | 6 節點二次三角形元素 | |
| 241 | 4 | 4 節點一次四邊形元素 | |
| 242 | 8 | 8 節點二次四邊形元素(Serendipity 族) | |
| 實體元素 | 301 | 2 | 2 節點桿元素 |
| 341 | 4 | 4 節點一次四面體元素 | |
| 342 | 10 | 10 節點二次四面體元素 | |
| 351 | 6 | 6 節點一次稜柱元素 | |
| 352 | 15 | 15 節點二次稜柱元素 | |
| 361 | 8 | 8 節點一次六面體元素 | |
| 362 | 20 | 20 節點二次六面體元素(Serendipity 族) | |
| 介面元素 | 541 | 4×2 | 4 節點一次四邊形面元素(不可用於應力分析) |
| 542 | 8×2 | 8 節點二次四邊形面元素(不可用於應力分析) | |
| 梁元素 | 611 | 2 | 2 節點 Bernoulli-Euler 梁元素(每節點 6 自由度) |
| 641 | 2×2 | 2 節點 Bernoulli-Euler 梁元素(每節點 3 自由度,用於混合自由度) | |
| 殼元素 | 731 | 3 | MITC3 三角形殼元素(每節點 6 自由度) |
| 741 | 4 | MITC4 四邊形殼元素(每節點 6 自由度) | |
| 743 | 9 | MITC9 四邊形殼元素(每節點 6 自由度) | |
| 761 | 3×2 | MITC3 三角形殼元素(每節點 3 自由度,用於混合自由度) | |
| 781 | 4×2 | MITC4 四邊形殼元素(每節點 3 自由度,用於混合自由度) |
六面體一次元素 361 有多種公式化方式(完全積分、不相容模式、B-bar 與 F-bar),可透過分析控制加以選擇。詳情請參閱高性能元素公式。
梁元素 641 與殼元素 761/781 是用於將具有 6 自由度的結構元素,與同一節點上具有 3 自由度的實體元素連接的公式;一個結構節點以兩個 3 自由度節點表示。其公式本身與對應的 6 自由度版本(611、731、741)相同。
形狀函數函式庫¶
元素計算程序(剛性矩陣與內力向量的建構)並不針對每一種元素類型各自提供程序,而是透過統一介面呼叫形狀函數函式庫,並將元素類型編號 fetype 作為引數。elementInfo 模組(fistr1/src/lib/element/element.f90)提供下列函數。
NumOfQuadPoints(fetype):傳回該元素類型的積分點數 \(n_q\)。getQuadPoint(fetype, np, pos):傳回積分點 \(i\) 的自然座標 \(\boldsymbol{r}_i\)。getWeight(fetype, np):傳回積分點 \(i\) 的權重 \(w_i\)。getShapeFunc(fetype, r, N):傳回自然座標 \(\boldsymbol{r}\) 處的形狀函數值 \(N_\alpha^e(\boldsymbol{r})\)。getShapeDeriv(fetype, r, dN):傳回形狀函數對自然座標的導數 \(\partial N_\alpha^e/\partial \boldsymbol{r}\)。getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x):給定元素節點座標 \(\boldsymbol{X}^e\),傳回對物理座標的導數 \(\partial N_\alpha^e/\partial \boldsymbol{x}\) 與 Jacobian 行列式 \(J\)。getNumberOfSubface(fetype)、getSubFace(fetype, k, ...):傳回元素邊界面的數量,以及構成各面的節點編號。用於建構表面載荷與接觸面。
各函數會在內部依元素類型編號分支,並呼叫為各元素類型提供的下層模組(tet4n.f90、tet10n.f90、prism6n.f90、prism15n.f90、hex8n.f90、hex20n.f90、tri3n.f90、tri6n.f90、quad4n.f90、quad8n.f90、quad9n.f90、line2n.f90、line3n.f90)中的形狀函數與形狀函數導數副程式。積分點座標與權重的數值表集中在 quadrature.f90 中。若要新增元素類型,需實作對應的下層模組,並在 elementInfo 的各函數中新增分支。
二次三角形元素的中間節點排序轉換¶
對二次三角形元素 232,HEC-MW 網格輸入格式(先依元素周邊排列角節點,再依邊 1-2、2-3、… 排列中間節點)與元素函式庫形狀函數所假定的 FrontISTR 內部格式,其中間節點的排列順序不同。這兩種格式的差異會在網格載入後立即由 hecmw2fstr_mesh_conv(fistr1/src/common/hecmw2fstr_mesh_conv.f90 與 hecmw2fstr_connect_conv.c)處理,依轉換表 Table232 將六個節點重新排列為 \(\{1,2,3,6,4,5\}\)。由於轉換直接作用於儲存元素連接資訊的陣列,因此後續所有元素函式庫呼叫都使用 FrontISTR 內部節點順序。輸出結果時,反向轉換 fstr2hecmw_mesh_conv 會在寫出前還原為 HEC-MW 格式,因此使用者對輸入與輸出都只需留意 HEC-MW 格式。
二次三維實體元素 342(四面體)與 352(稜柱)也有類似的自動轉換,而 362(二次六面體)則不進行轉換。其處理方式請參閱三維實體元素的形狀函數。對二次平面四邊形元素 242 與介面元素 542,由於 HEC-MW 輸入格式與內部格式的中間節點順序相同,因此不進行轉換。
相關項目¶
- 形狀函數與有限元素近似 — 形狀函數的數學定義
- 數值積分 — 積分點、權重與元素積分的近似形式
- 三維實體元素的形狀函數 — 連續體實體元素的具體自然座標與形狀函數
- 高性能元素公式 — B-bar / F-bar / 不相容模式 / 殼 / 梁
- 元素函式庫(功能) — 元素類型選項與選擇指引