要素番号体系と形状関数ライブラリ¶
形状関数と有限要素近似で導入した形状関数 \(N_\alpha^e(\boldsymbol{r})\) は要素種類ごとに具体形が異なる.本章では FrontISTR が提供する要素群を 3 桁の要素タイプ番号で分類し,各要素を統一的に扱うための形状関数ライブラリのインターフェースを示す.3 次元ソリッド要素の自然座標系・形状関数の具体形と 2 次要素の中間節点並び変換は3 次元ソリッド要素の形状関数,要素タイプの選択ガイドは要素ライブラリ(機能)に委ねる.
要素の分類と命名規則¶
FrontISTR の要素タイプは 3 桁の番号で識別する.各桁の意味は次のとおりである.
- 1 桁目(要素群):1=線要素・トラス,2=平面要素,3=ソリッド要素,5=インターフェース要素,6=梁要素,7=シェル要素.
- 2 桁目(基本形状):要素群内の幾何形状(三角形・四角形・四面体・三角柱・六面体)を区別する.
- 3 桁目(補間次数):1=1 次(角節点のみ),2=2 次(中間節点を含む).例外として 2 節点トラス要素は 301 番である.
提供する要素を要素群別に下表に示す.
| 要素群 | 要素タイプ | 節点数 | 説明 |
|---|---|---|---|
| 線要素 | 111 | 2 | 2 節点リンク要素(応力解析では使用不可) |
| 112 | 3 | 3 節点リンク要素(応力解析では使用不可) | |
| 平面要素 | 231 | 3 | 三角形 1 次要素 |
| 232 | 6 | 三角形 2 次要素 | |
| 241 | 4 | 四角形 1 次要素 | |
| 242 | 8 | 四角形 2 次要素(Serendipity 族) | |
| ソリッド要素 | 301 | 2 | 2 節点トラス要素 |
| 341 | 4 | 四面体 1 次要素 | |
| 342 | 10 | 四面体 2 次要素 | |
| 351 | 6 | 三角柱 1 次要素 | |
| 352 | 15 | 三角柱 2 次要素 | |
| 361 | 8 | 六面体 1 次要素 | |
| 362 | 20 | 六面体 2 次要素(Serendipity 族) | |
| インターフェース要素 | 541 | 4×2 | 四角形面 1 次要素(応力解析では使用不可) |
| 542 | 8×2 | 四角形面 2 次要素(応力解析では使用不可) | |
| 梁要素 | 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 自由度,自由度混在用) |
六面体 1 次要素 361 には複数の定式化(完全積分・非適合・B-bar・F-bar)があり,解析制御から選択する.詳細は高性能要素定式化を参照.
梁要素 641 およびシェル要素 761/781 は,6 自由度を持つ構造要素を 3 自由度のソリッド要素と同じ節点で接続するための定式化で,1 つの構造節点を 2 つの 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}\) およびヤコビアン行列式 \(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 の各関数の分岐に追加すればよい.
三角形 2 次要素の中間節点並び変換¶
三角形 2 次要素 232 は,HEC-MW メッシュ入力形式(角節点を周回した後,辺 1-2,2-3,… の順に中間節点を並べる規約)と要素ライブラリの形状関数が前提とする FrontISTR 内部形式とで,中間節点並びが異なる.両形式の差異は,メッシュ読込み直後に呼ばれる hecmw2fstr_mesh_conv(fistr1/src/common/hecmw2fstr_mesh_conv.f90 および hecmw2fstr_connect_conv.c)が変換テーブル Table232 に従って 6 個の節点を \(\{1,2,3,6,4,5\}\) に並び替えることで解消される.変換は要素接続情報の格納配列に対して直接行われるため,以降の要素ライブラリ呼び出しではすべて FrontISTR 内部の節点並びが用いられる.結果出力時には逆変換 fstr2hecmw_mesh_conv で HEC-MW 形式に戻したうえで書き出すため,入出力ともにユーザは HEC-MW 形式のみを意識すればよい.
3 次元ソリッド要素 342(四面体 2 次)と 352(三角柱 2 次)にも同種の自動変換があり,362(六面体 2 次)には変換が無い.これらの取り扱いは 3 次元ソリッド要素の形状関数 を参照.2 次の四角形平面要素 242 およびインターフェース要素 542 については,HEC-MW 入力形式と内部形式の中間節点並びが一致するため変換は行われない.
関連項目¶
- 形状関数と有限要素近似 — 形状関数の数学的定義
- 数値積分 — 積分点・重みと要素積分の近似形
- 3 次元ソリッド要素の形状関数 — 連続体ソリッド要素の自然座標と形状関数の具体形
- 高性能要素定式化 — B-bar / F-bar / 非適合 / シェル / 梁
- 要素ライブラリ(機能) — 要素タイプの選択肢と使い分け