シェル厚さゼロエラー

カテゴリ: エラー解決DB | 2026-02-01
CAE visualization for zero thickness shell - technical simulation diagram

概要

🧑‍🎓

先生! 今日はシェル厚さゼロエラーの話なんですよね? どんなものなんですか?


理論と物理

シェル要素の厚さの定義と役割

🧑‍🎓

「シェル厚さゼロエラー」というのを見かけました。シェル要素の「厚さ」って、具体的に何を定義しているパラメータなんですか?

🎓

良い質問だ。シェル要素の厚さは、中面で定義された幾何に「肉厚」を与えるパラメータだ。例えば、板厚1.2mmの鋼板をモデル化する場合、中面サーフェスを定義し、その要素プロパティに厚さ1.2mmを割り当てる。この厚さがゼロまたは未定義だと、断面二次モーメントや断面係数が計算できず、剛性マトリクスが特異になる。具体的には、曲げ剛性は厚さの3乗に比例する

$$ D \propto Et^3 $$
ので、t=0なら曲げ剛性もゼロだ。

🧑‍🎓

厚さは材料のヤング率や密度とどう関係するんですか? 厚さゼロでも、材料自体の特性は定義されているはずでは?

🎓

関係は密接だ。シェル要素の単位面積あたりの面内剛性(膜剛性)は

$$ K_m = \frac{Et}{1-\nu^2} $$
で与えられる。ここでEはヤング率、νはポアソン比、tが厚さだ。t=0なら、材料にSUS304(E=193 GPa)を割り当てていても、面内剛性はゼロになる。質量も同様で、面密度はρt(ρ:密度)だから、厚さがゼロなら質量もゼロだ。ソルバーはこれらを計算する段階でエラーを出す。

🧑‍🎓

「厚さ」の入力ミス以外で、理論的に厚さがゼロと見なされてしまうケースはありますか?

🎓

ある。代表的なのは「シェルオフセット」の設定だ。シェルの中面から、応力評価面までの距離をオフセットと呼ぶ。Abaqusの*SHELL SECTIONでOFFSETパラメータを誤って定義すると、実効的な肉厚が計算から抜け落ち、等価的な厚さゼロ状態を生むことがある。また、プリプロセッサで厚さを「変数」として定義し、その変数がゼロに評価される場合も該当する。

数値解法と実装

剛性マトリクス生成とエラー検出プロセス

🧑‍🎓

ソルバーは具体的にどの計算ステップで「厚さゼロ」を検出してエラーを出すんですか?

🎓

要素剛性マトリクスを生成する「要素行列ルーチン」内だ。シェル要素の剛性マトリクス

$$ \mathbf{K}_e = \int_{-1}^{1} \int_{-1}^{1} \mathbf{B}^T \mathbf{D} \mathbf{B} \, \text{det} \mathbf{J} \, d\xi d\eta $$
を計算する際、構成則マトリクスDに厚さtが組み込まれている。多くのソルバーは、t ≤ 0 または t < 許容値(例: 1.0e-10)のチェックをここで行う。Ansys Mechanical APDLでは、実数定数として定義されたR1(厚さ)がこのチェック対象だ。

🧑‍🎓

厚さに非常に小さい正の値、例えば1e-12を入れたらエラーは出ませんか? 理論的にはゼロではないけど。

🎓

エラーは出ないかもしれないが、数値的に不安定で結果は無意味だ。先程の曲げ剛性の式

$$ D = \frac{Et^3}{12(1-\nu^2)} $$
にt=1e-12を代入してみよう。E=2e11 PaとしてもDは極めて小さな値になり、剛性マトリクスの条件数が悪化する。これにより、ソルバー(例えばMUMPSやSPOOLES)が特異性警告を出すか、収束しない。実務では、厚さの下限を材料や用途に応じて決める。例えばJIS G 3131の熱間薄板鋼板でも最小厚さは0.4mm程度だ。

🧑‍🎓

厚さが要素ごとに異なる「可変厚さシェル」の場合、一部の要素だけ厚さゼロだとどうなりますか?

🎓

その要素の剛性マトリクス生成時にエラーが発生し、解析は中断される。Ansys Workbenchで「Shell Thickness」を「Tabular Data」でノードごとに定義する場合、入力漏れやゼロ値があるとエラーになる。NastranのPSHELLプロパティカードでは、T(デフォルト厚さ)フィールドが必須で、ここが空白やゼロだと実行前にエラー検出される。局所的な厚さゼロは、現実の構造には存在しないから、モデリングミスとして早期に検出される仕組みだ。

実践ガイド

エラーを未然に防ぐモデリング手順

🧑‍🎓

このエラーを防ぐための、具体的なモデリング時のチェックリストはありますか?

🎓

もちろんある。実務では以下の順で確認する。

1. **ジオメトリインポート時**: 3D CADから中面を抽出した後、抽出されたサーフェスが本当に「面」として成立しているか確認(線のみになっていないか)。 2. **材料・プロパティ割り当て**: シェルプロパティを作成し、厚さ値を入力。単位系に注意(mm系なら1.2、m系なら0.0012)。 3. **プロパティの幾何への関連付け**: 作成したシェルプロパティが、対象のサーフェスジオメトリまたはメッシュに正しく割り当たっているか視覚的に確認(多くのプリプロセッサは色分け表示する)。 4. **バッチ処理の場合**: 入力ファイル(.inp, .dat)をテキストエディタで開き、*SHELL SECTIONやPSHELLといったキーワード周辺の厚さパラメータを検索・確認する。

🧑‍🎓

複数の板厚部品がアセンブリされたモデルで、うっかり厚さを付け忘れるミスが多いです。効率的な見落とし検出方法は?

🎓

プリプロセッサのフィルタリング機能を使う。例えば、HyperMeshでは「Entity State」ブラウザで「Properties」を選び、厚さが未定義(Unspecified)のコンポーネントを一覧表示できる。Ansys Mechanicalでは「Worksheet」ビューを開き、「Geometry」→「Thickness」列でソートし、0や空白の行を探す。また、解析実行前の「Model Check」機能(Abaqus/CAEやFemapに搭載)を必ず実行すると、厚さ未定義を含む一般的な設定ミスをレポートしてくれる。

🧑‍🎓

厚さを後から一括で変更する必要が出た時、安全に更新する方法は?

🎓

「パラメータ管理」機能を使うのがベストプラクティスだ。Siemens NX SimcenterやAnsys Workbenchでは、厚さを「設計パラメータ」として定義できる。例えば、`t_bracket = 2.5 [mm]` と定義し、このパラメータをシェルプロパティにリンクさせる。後で設計変更があれば、パラメータテーブルで `t_bracket` の値を一括変更するだけで、全ての関連するプロパティが更新される。これにより、手動入力による打ち間違い(0を入れるなど)を防げる。

ソフトウェア比較

主要ソフトウェアにおけるエラーメッセージと設定箇所

🧑‍🎓

Ansys、Abaqus、Nastranで、このエラーが出た時のメッセージはどう違いますか?

🎓

それぞれ特徴がある。

- **Ansys Mechanical APDL**: `Zero or negative area detected for element ...` という警告が出た後、`Negative or zero thickness for shell element ...` ではっきりとエラーを報告する。 - **Abaqus/Standard**: `*SHELL SECTION` の定義が不完全だと、データチェック段階で `"The thickness must be positive"` というエラーを出力する。`.dat`ファイルに明記される。 - **MSC Nastran**: 実行前のデータチェックで、`USER FATAL MESSAGE 3050 (VECPRN)` が発生し、`PSHELL` カードの `T` フィールドにゼロまたは空白があることを指摘する。具体的なIDが示される。

🧑‍🎓

厚さを設定するためのGUI画面や入力項目は、ソフトごとにどこが違うんでしょう?

🎓

大きく分かれる。

- **Ansys Workbench**: 「Engineering Data」で材料を定義後、「Model」ブラウザで「Geometry」下のサーフェスボディを選択し、「Details」ペインの「Assignment」で「New Section」を作成。その中に「Thickness」入力欄がある。 - **Abaqus/CAE**: 「Property」モジュールで「Create Section」を選び、「Shell」を選択。「Edit Section」ダイアログの「Thickness」欄に数値を入力。ここで「数値」か「場変数」かを選べる。 - **Femap with NX Nastran**: 「Property」を新規作成し、「3D」タブではなく「2D」タブを選択。プロパティタイプ(PSHELL, PCOMP等)を選び、ダイアログ内の「Thickness」フィールドに入力する。GUIが直感的だが、階層が深い。

🧑‍🎓

COMSOL Multiphysicsのように「シェル」と「プレート」を明確に分けているソフトもありますか?

🎓

COMSOLは「Shell」インターフェースで膜と曲げの両方を扱い、厚さは物理場の設定で定義する。一方、AnsysやAbaqusでは、「Shell」要素自体が膜と曲げの剛性を内包する単一の要素タイプとして扱われることが多い。ただし、Abaqusには「Membrane」要素(厚さは必要だが曲げ剛性なし)や「Surface」要素(厚さ概念なし)もあり、用途で使い分ける。重要なのは、どの物理インターフェースや要素タイプを選んだかで、厚さの必須/不要が決まる点だ。COMSOLで「Shell」を選んでおきながら厚さをゼロにすると、同様のエラーが発生する。

トラブルシューティング

エラー発生時の具体的な調査手順

🧑‍🎓

「Zero thickness」エラーメッセージが出た時、最初に何を確認すべきですか?

🎓

まず、エラーメッセージに記載されている**要素番号**または**プロパティID**を特定せよ。例えば、`Error: Zero thickness for shell element 10532` なら、要素10532が属するコンポーネントまたはプロパティをプリプロセッサで探す。そのプロパティの厚さ設定を開き、値が入力されているか確認する。入力されていても、その値が「0」「1E-3」(単位系ミスで実質0)「負の値」になっていないかチェックする。

🧑‍🎓

プロパティには正の厚さが定義されているのにエラーが出る場合、次に疑うべきポイントは?

🎓

「**継承関係**」と「**メッシュ依存の厚さ定義**」だ。親コンポーネントに厚さを定義しても、子のジオメトリに別のプロパティ(デフォルトや未定義)が割り当てられていることがある。また、HyperMeshの「Card Edit」などで、要素ごとに厚さを上書きする設定(例えばPSHELLのT1, T2, T3, T4フィールド)があり、そこでゼロが入力されている可能性がある。要素ごとの厚さを可視化する機能(ほとんどのプリプロセッサにある)を使って、問題の要素周辺の厚さ分布を色コンターで確認するのが早い。

🧑‍🎓

入力ファイル(.inp, .bdf)を直接編集する場合、どの行を重点的にチェックすればいいですか?

🎓

エラーが出た要素番号(EID)から逆引きする。まず、要素カード(Abaqusなら`*ELEMENT`、Nastranなら`CQUAD4`や`CTRIA3`)を探し、その要素が参照するプロパティID(PID)を確認する。次に、そのPIDに対応するプロパティカード(`*SHELL SECTION` や `PSHELL`)をファイル内で検索する。そのカード内の厚さパラメータ(`*SHELL SECTION`の直後の数値、`PSHELL`のTフィールド)を確認する。スクリプト(Python, awk)でPIDごとの最小厚さを抽出するのも有効だ。

🧑‍🎓

全ての厚さ設定を確認したがゼロは見当たらない。それでもエラーが出る、最後の可能性は?

🎓

「**プリプロセッサのバグ**」または「**単位系の不整合によるアンダーフロー**」が考えられる。例えば、ジオメトリの単位がメートル、材料プロパティの単位がN/mm^2 (MPa) の混在系で、厚さに0.001 [m] (=1mm) を入力したつもりでも、ある変換ルーチンでこの値が0に丸められてしまう可能性がある。対策としては、モデル全体を一貫した単位系(SIならm, Pa, kg)に統一し、厚さを0.001ではなく1.0e-3と指数表記で明示的に入力してみる。それでもダメなら、当該要素を含む小さなテストモデルを新規作成し、問題を再現・孤立化させる。

この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
プロフィールを見る