NASTRAN入力形式 — CAE用語解説

カテゴリ: 用語集 | 2026-01-15
CAE visualization for nastran format - technical simulation diagram

NASTRAN入力形式

🧑‍🎓

先生、Nastranフォーマットってどんなファイル形式ですか?

理論と物理

NASTRANの入力形式の基本哲学

🧑‍🎓

NASTRANの入力ファイルは、なぜ「BDF」と呼ばれる固定フォーマットのテキストファイルなんですか?GUIでモデルを作るのが主流なのに。

🎓

歴史的経緯と信頼性が理由だ。NASTRANは1960年代にNASAで開発され、当時の計算機環境ではカードリーダーで読み込む固定長フォーマットが標準だった。この形式は、Bulk Data File (BDF) として規格化され、ソルバーがデータをパースする際の曖昧さを排除できる。例えば、1カラム目が「$」ならコメント、1-8カラムがフィールド名、9-16カラムが第1データ…という具合に、位置が決まっている。MSCやSiemensのソルバーも、この基本フォーマットを継承している。

🧑‍🎓

位置が決まっているということは、桁数を間違えると全く違う解釈をされてしまうんですか?

🎓

その通りだ。例えば、節点座標を定義するGRIDカード。9-16カラムに節点番号「100」を入れるつもりで「100」と書いたが、12カラム目から書いてしまった場合、ソルバーは9-16カラムを「    100」と解釈し、節点番号は「100」ではなく「0」と読まれる(空欄は0扱い)。これがモデリングエラーの原因になる。GUIツール(Patran, Femap)は最終的にこのBDFを生成する“翻訳機”のようなものだ。

🧑‍🎓

BDFの中身は、どういう構造で記述されているんですか?

🎓

大まかに3つのブロックに分かれる。まず、実行制御部(SOL, CENDなど)。次に、ケース制御部(SUBCASE, SPC, LOADなど)。最後が、モデルデータ全てが詰まったバルクデータ部だ。バルクデータ部は、GRID, CQUAD4, MAT1, FORCEといった「カード」の集合体で、各カードが特定のフォーマットに従う。これがNASTRAN入力の骨格だ。

数値解法と実装

バルクデータカードのフォーマットと数値

🧑‍🎓

具体的なカードの書き方を教えてください。例えば、材料データはどう書くんですか?

🎓

等方性線形弾性材料ならMAT1カードを使う。フォーマットは「小さいフィールド」と「大きいフィールド」があるが、基本は1-8カラムがカード名、以降8文字ごとにデータを置く。例えば、鋼材を定義するなら:

MAT1    1    2.05E+05    0.3    7.85E-09
ここで、9-16カラム:材料ID「1」、17-24カラム:ヤング率「2.05E+05」(MPa)、25-32カラム:ポアソン比「0.3」、33-40カラム:密度「7.85E-09」(ton/mm^3)。指数表記「E」も使える。

🧑‍🎓

8文字を超える数値、例えば有効数字がたくさん必要な定数を入れたい時はどうするんですか?

🎓

その場合は、「大きいフィールド」フォーマットを使う。1-8カラムがカード名、9-16カラムが第1データ、17-24カラムが第2データ…というのは同じだが、1つのデータフィールドを16カラムに拡張する。具体的には、9-24カラムが第1データ、25-40カラムが第2データとなる。データを記入する際、9カラム目からではなく、10カラム目から書き始めるのが慣例だ。これで倍の桁数が使える。

🧑‍🎓

要素の定義はもっと複雑そうですが、CQUAD4カードはどう書くんですか?

🎓

4節点シェル要素のCQUAD4は、最低限、要素ID、プロパティID、4つの節点番号が必要だ。例:

CQUAD4  100    10    1    2    3    4
9-16カラム:要素ID「100」、17-24カラム:プロパティID「10」、25-32カラム:節点1「1」、33-40カラム:節点2「2」、41-48カラム:節点3「3」、49-56カラム:節点4「4」。節点の並び順は右手系の反時計回りが原則で、これが間違っているとヤコビアンが負になりエラーになる。

実践ガイド

BDFファイル作成とデバッグのワークフロー

🧑‍🎓

実際にBDFファイルを作成・修正する時、効率的な方法はありますか?テキストエディタで直で触るのですか?

🎓

基本はGUIプリプロセッサ(Patran, Femap, HyperMesh)でモデルを作り、BDFをエクスポートする。しかし、パラメータスタディで材料定数だけを一括変更したり、特定の節点群に荷重を追加する場合は、スクリプト(Python, Perl)やテキストエディタで直接編集するのが速い。その際、カラム位置を可視化するエディタ設定(グリッド線表示)が必須だ。また、MSCやSiemensのソルバーには、構文チェックのみを行うnastran checkオプションがあり、実行前にエラーを検出できる。

🧑‍🎓

バルクデータ部が数万行もある巨大なファイルで、特定の要素(例えばIDが5000から6000のCQUAD4)だけを抽出して確認したい時はどうしますか?

🎓

UNIX系のgrepawksedコマンドが強力だ。例えば、grep -n "CQUAD4.*[5-9][0-9][0-9][0-9]" model.bdf | head -20とすれば、IDが5000-9999のCQUAD4カードとその行番号を上位20件表示できる。WindowsならPowerShellや、findstrコマンドで代用可能。このように、BDFはテキストベースだからこそ、プログラミングによるフィルタリングや一括編集が容易という利点がある。

🧑‍🎓

実行時に「FATAL MESSAGE」が出た場合、BDFファイルのどこを疑えばいいですか?

🎓

まず、FATAL MESSAGEの直後のメッセージを読む。例えば「USER FATAL MESSAGE 9050 (SCAN)」は、バルクデータのスキャンエラーで、カードのフォーマット不正が疑われる。出力された.f06ファイルや.logファイルに、エラーが発生した「付近のカード」が表示されるので、そのカードの前後数行を重点的にチェックする。特に、カード名の綴り間違い(GRIDGRIDDと書く)、数値フィールドに文字が入っている、継続カード(「*」で始まる)の使い方ミスが典型だ。

ソフトウェア比較

各社ソルバーにおける入力形式の差異

🧑‍🎓

「NASTRAN」と言ってもMSC、Siemens、NEiなどいくつかありますが、入力形式は完全に同じなんですか?

🎓

基本フォーマットは共通だが、各社が独自拡張を加えている。MSC NASTRANのBDFをそのままSiemens NX NASTRANで実行できることが多いが、100%互換ではない。例えば、MSC独自の非線形要素や解法オプションに対応するカードは、Siemensでは無視されたりエラーになる。逆も然り。また、自由フォーマット入力の扱いにも差がある。MSCはカンマ区切りをサポートするが、Siemensはより厳格に固定フォーマットを要求する傾向がある。

🧑‍🎓

自由フォーマット入力とは何ですか?

🎓

固定カラム位置に縛られず、カンマやスペースでデータを区切って記述する形式だ。BDFの先頭にNASTRAN SYSTEM(344)=1 などの実行制御文を入れることで有効になる。例:

MAT1, 1, 2.05E+05, 0.3, 7.85E-09
これは読み書きが楽だが、全てのソルバーやバージョンで完全にサポートされているわけではない。特に大規模データではパースが遅くなる可能性もあり、業界では固定フォーマットがデファクトスタンダードだ。

🧑‍🎓

Abaqusの.inpファイルやAnsysの.cdbファイルとの違いは何ですか?

🎓

根本的な哲学が違う。Abaqusの.inpはキーワードベースで、比較的自由なフォーマットだ。Ansysの.cdbはNASTRAN BDFと同様の固定フォーマットの系譜を引くが、カード名やデータ構造が異なる。例えば、節点定義はGRIDではなくNだ。NASTRAN BDFは、航空宇宙業界で長年使われてきた「標準」としての地位が強く、異なるベンダーのプリポストツール(Altair HyperMesh, ANSA等)もBDFの入出力を標準サポートしている点が最大の強みだ。

トラブルシューティング

よくあるBDF関連のエラーと対策

🧑‍🎓

「USER FATAL MESSAGE 9052」というエラーが出ました。これは何が原因ですか?

🎓

9052は「バルクデータのカードイメージが認識できない」エラーだ。最も多い原因は、カード名の綴り間違いまたはカード名が許可された位置にないこと。例えば、バルクデータ部にCENDBEGIN BULKといった実行制御カードを書いてしまった場合などだ。エラーメッセージの近くに「OFFENDING CARD:」と表示されているはずなので、そのカードの1-8カラムを一字一句確認せよ。

🧑‍🎓

「*** SYSTEM FATAL MESSAGE 4272 (GENEL)」は?

🎓

4272は「ジョブが実行可能な大きさを超えた」というライセンスやシステムリソース関連のエラーだ。BDFファイル自体のエラーではないが、モデルが大きすぎる(例えば、要素数がライセンスで許可された上限を超える)ことが原因。MSC NASTRANならPARAM,MAXRATIOPARAM,POSTの設定を見直すか、あるいはモデルをパーツ分割してマルチランすることを検討する必要がある。

🧑‍🎓

計算は走るのですが、結果(変位や応力)が明らかに物理的にあり得ない値でした。BDFのどこを疑うべきですか?

🎓

FATALではないが最も危険なケースだ。まず、単位系の不一致を疑え。BDFは単位を規定しない。例えば、GRID座標をmmで書き、MAT1のヤング率をMPaで書いたが、FORCEカードの荷重値をNではなくkNで書いていたら、力のつり合いが崩れる。次に、境界条件の見落とし。SPC(単点拘束)カードで拘束した節点番号が、実際のモデルに存在するか。最後に、材料定数の桁間違い。E+05をE+04と書いていれば、剛性が1/10になり変位は10倍になる。

🧑‍🎓

大きなBDFファイルを編集する時、うっかりカラム位置をずらしてしまうのが怖いです。予防策は?

🎓

三つの対策がある。第一に、専用のBDFエディタや、カラムガイド線が表示されるエディタ(VSCode, Notepad++などにプラグインあり)を使う。第二に、編集は必ず「一括置換」や「スクリプト」で行い、手打ちを避ける。第三に、編集前後のファイルの差分を取る(diffコマンドやWinMergeなどのツール)。変更した部分だけを視覚的に確認でき、意図しない位置ずれを発見できる。これらは実務では基本の作業手順だ。

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