形状関数 — CAE用語解説
理論と物理
形状関数の定義と役割
形状関数って、教科書には「要素内の任意の点での物理量を節点値から補間する関数」と書いてありますが、具体的に何を「補間」しているんですか?
良い質問だ。最も基本的なのは変位場の補間だ。例えば、1次元の2節点棒要素では、要素内の任意の点xでの変位u(x)は、節点1の変位u1と節点2の変位u2を使って、
なるほど。でも、変位だけでなく応力も計算したいですよね?形状関数から応力はどうやって求めるんですか?
それが形状関数の微分の出番だ。1次元の棒要素で言えば、ひずみεは変位uの微分だから、
「C0連続」と「C1連続」という言葉を聞きますが、形状関数と関係あるんですか?
大いに関係がある。C0連続とは、関数そのもの(変位)が連続だが、その1階微分(ひずみ)は不連続でも良いことを意味する。ほとんどの固体要素(三角形、四辺形、四面体、六面体)はこれだ。一方、C1連続は関数の1階微分まで連続である必要がある。板やシェルの曲げ解析では、たわみ角の連続性が必要なので、MITC4要素やDKT要素のような特殊な形状関数が使われる。汎用ソフトでは、AnsysのSHELL181要素やAbaqusのS4要素がこの問題に対処している。
数値解法と実装
等パラメトリック要素と座標変換
実用的な要素は曲がっていたりしますが、あれはどうやって形状関数を定義しているんですか?
そこで「等パラメトリック要素」の概念が登場する。これは、要素の幾何形状(座標x, y, z)と、求めたい物理量(変位u, v, w)を「同じ」形状関数で補間する手法だ。例えば、2次元の4節点アイソパラメトリック四辺形要素では、
自然座標で微分は簡単でも、実際のひずみを求めるには実座標(x,y)での微分が必要ですよね?どう変換するんですか?
連鎖律とヤコビ行列を使う。具体的には、
ガウス積分点で応力を評価すると聞きますが、なぜ節点ではなく積分点なのですか?
形状関数の微分(Bマトリックス)は、要素内で場所によって値が変わる。剛性マトリックスを計算する際の積分は、このBマトリックスを含む式を数値積分(ガウス積分)で行う。その積分点でBマトリックスが評価され、結果として応力・ひずみもまず積分点で計算される。節点での値は、積分点の値から形状関数を使って外挿(スムージング)して求めている。だから、積分点の応力が最も信頼できる。Ansysの結果で「Element Solution」と「Nodal Solution」の違いはここから来ている。
実践ガイド
要素選択とメッシュ品質
実際の解析で、1次要素と2次要素はどう使い分ければいいですか?
用途とトレードオフで決まる。1次要素(線形形状関数)は節点数が少なく計算コストが低いが、曲げや応力集中を表現するには非常に細かいメッシュが必要だ。一方、2次要素(2次形状関数)は中間節点を持つため、曲線形状や応力勾配を少ない要素数で高精度に捉えられる。ただし、節点数は約2倍、計算コストは数倍になる。実務では、接触問題では1次要素が安定しやすく、応力評価が重要な部分には2次要素を使うハイブリッドメッシュが一般的だ。Abaqusのマニュアルでは、応力解析にはC3D20(2次六面体)を推奨しているが、大規模モデルではC3D8R(1次六面体、低減積分)も多用される。
メッシュ品質チェックで「アスペクト比」や「歪み」を見ますが、これらは形状関数の性能とどう関係するんですか?
直接的な関係がある。形状関数は理想的な正方形や正三角形を前提として導出されている。アスペクト比が極端に大きい(細長い)要素では、ヤコビ行列の条件数が悪化し、形状関数の微分(Bマトリックス)の精度が著しく落ちる。具体的には、アスペクト比10:1を超えると、特に1次要素では応力誤差が数十%に達することもある。歪み(スキュー)が大きい要素も同様だ。Ansys MeshingやHyperMeshの品質チェック基準(アスペクト比<5、スキュー角<60度など)は、形状関数が適切に機能する範囲を経験的に定めたものだ。
「低減積分」と「完全積分」の選択も形状関数に関係ありますか?
大いにある。形状関数がn次多項式の場合、剛性マトリックスの被積分関数は2n次になる。これを正確に積分するのが「完全積分」だ。例えば2次要素なら3×3のガウス積分点が必要になる。一方、「低減積分」はそれより少ない積分点(2次要素で2×2)を使う。計算コストは下がるが、ゼロエネルギー変形(アワーモード)が発生するリスクがある。これを防ぐために「アワーグラス制御」が施される。Abaqusの要素名の最後の「R」(例:C3D8R)はReduced integrationを意味する。実務では、低減積分要素の方が柔らかく、接触の収束性が良いことが多い。
ソフトウェア比較
各ソルバーでの実装と特徴
Ansys、Abaqus、COMSOLで、形状関数の考え方や要素の指定方法に違いはありますか?
数学的な基礎は同じだが、要素ライブラリとデフォルト設定に大きな違いがある。Ansys Mechanicalは非常に多くの要素タイプを提供し、ユーザーが細かく選択する(例:SOLID185, SOLID186, SOLID187)。Abaqus/Standardはもう少し抽象化されていて、要素族(例:C3D8: 3次元8節点)を指定し、積分則や連続条件は「要素特性」で後から追加設定する方式だ。COMSOL Multiphysicsは「物理場主導メッシュ」の思想が強く、選択した物理(構造力学、電磁気など)に応じてソルバーが適切な形状関数の次数を自動的に提案・選択する傾向がある。ユーザーが形状関数を直接いじる機会は少ない。
「p型有限要素法」というのを聞きました。これも形状関数が違うんですか?
その通り。通常のh型FEM(要素サイズhを小さくする)とは根本が異なる。p型FEMでは、要素分割は変えずに、形状関数の多項式次数pを上げていくことで精度を高める。COMSOLがこの手法を積極的に採用している。形状関数として、区分的多項式ではなく、直交多項式(ルジャンドル多項式など)を使うことが多い。利点は、メッシュを作り直さずに精度向上が図れること。欠点は、次数を上げると計算コストが急増し、特に非線形問題では収束性が悪化しやすいことだ。AnsysやAbaqusでは主流ではないが、特定の専門分野(電磁界解析など)では使われる。
無償ソフトのCalculiXやCode_Asterでは、形状関数の実装は商用ソフトと比べてどうですか?
CalculiX(Abaqusと互換性を意識)やCode_Aster(フランス電力EDF製)も、等パラメトリック要素や低減積分など、基本的な形状関数の実装は商用ソフトと変わらない。ただし、要素ライブラリの豊富さや、高度な非線形材料モデルや接触アルゴリズムと形状関数の組み合わせにおける最適化・検証の蓄積は、AnsysやAbaqusに軍配が上がる。例えば、過度な変形下での要素安定化技術(アワーグラス制御、体積ロッキング対策)は、商用ソフトの方が洗練されていることが多い。無償ソフトでも理論は実装されているが、ユーザー自身がパラメータ調整でカバーする必要が出てくる。
トラブルシューティング
形状関数に起因する解析エラー
解析中に「Zero or negative Jacobian」というエラーが出ます。これは形状関数と関係ありますか?
まさに形状関数の座標変換の核心に関わるエラーだ。先ほど話したヤコビ行列[J]の行列式がゼロまたは負になることを意味する。これは、要素の形状が極端に歪んで、自然座標から実座標への写像が一意に定まらなくなった状態だ。具体的には、四辺形要素の内角が180度を超えて反転したり、四面体要素の体積がゼロになったりすると発生する。大変形解析で要素が大きく変形した時や、最初のメッシュ品質が極端に悪い時に起こりやすい。対策は、メッシュ品質の向上、大変形設定の見直し(要素フォーミュレーションの変更)、あるいはAbaqusの「distortion control」のような機能の利用だ。
応力結果を見ると、要素境界でギャップやジャンプが生じていることがあります。これも形状関数が原因?
その通り。C0連続要素では、変位は連続だが、その微分であるひずみ・応力は要素境界で不連続になり得る。これが「要素境界での応力のジャンプ」として現れる。これは誤差ではなく、離散化の必然的な性質だ。ソフトウェアは通常、節点での応力を求める際に、隣接要素の積分点応力を平均化してスムージングする。このスムージングが強すぎると実態を反映しなくなる。対策は、メッシュを細かくするか、高次要素を使うこと。結果を評価する時は、積分点応力(Abaqusでは「Integration Point」出力)を確認し、要素間のばらつきが許容範囲内かチェックするのが正しい手順だ。
「Hourglassing」という現象も聞きます。形状関数の何が問題で起こるんですか?
低減積分要素に特有の問題で、形状関数が「ゼロエネルギー変形モード」を捉えられないことに起因する。1次低減積分六面体要素(1点積分)では、ある特定の変形パターン(アワーグラスモード)が生じても、積分点でのひずみエネルギーがゼロと計算されてしまう。つまり、形状関数と低減積分の組み合わせにより、剛性マトリックスにランク不足が生じるんだ。商用ソフトはこれに対し、人工的な剛性(アワーグラス剛性)を付加する。Ansysでは「Hourglass Controls」、Abaqusでは「Hourglass Stiffness」の設定がある。値を大きくしすぎると要素が硬くなり過ぎ、小さすぎるとアワーグラスが発生する。デフォルト設定を使うのが無難だ。
四面体メッシュを使うと精度が悪いと言われるのは、形状関数のせいですか?
主な原因は形状関数の特性にある。1次四面体要素(4節点)は「定ひずみ要素」と呼ばれ、要素内でひずみ・応力が一定になる。これは急峻な応力勾配を表現するには不向きで、非常に細かいメッシュが必要になる。2次四面体要素(10節点)は改善されるが、同じ自由度で比較すると、六面体要素や四辺形要素に比べて精度が落ちる傾向がある。これは要素の幾何的な特性と形状関数の組み合わせによる。しかし、複雑形状の自動メッシュ生成では四面体が必須だ。実務的には、AbaqusのC3D10M(修正2次四面体)のような改良型要素を使い、応力評価が必要な領域では局所的にメッシュを細かくする、という対策を取る。
関連トピック
なった
詳しく
報告