4031

チュートリアル

著名な解析ソフトウェア NX Nastran のカスタマイズプログラムの DMAP に関しての使用方法を解説していきます。今回は最終回として、実際に DMAP を使用し、SOL100、および自作 SOL を使用した、簡単なプログラム作成を行います。

Femap with NX Nastran – DMAP 入門（3）桑原 雅治
1

はじめにSOL タイトル
COMPILE タイトル
SUBDMAP タイトル
プログラムの内容
END

前回は、DMAP の基本的なプログラム構成を、例を交えて説明しました。
今回は、実際にプログラムを行っていきます。作成
する内容は、『SOL100を使用した固有値計算機能』
および『自作 SOL を使用した固有値計算機能』を作成します。

2

SOL100および自作 SOL に関して

今回は、最初に SOL100という SOL 番号でプログラムを行います。
DMAP は、SOL に任意のタイトルを使用して、好きなプログラムを構成することが可能です。
ただし、バルクデータ内に設定したデータなどを読み込む設定も、すべてプログラム内に記載する必要があります。
今回、固有値計算を行うにあたって、いくつかのデータをバルクデータから読み込みます。この読み込みをはじめから設定するのは、プログラムが煩雑になりますので、SOL100を使用して、簡便なプログラムで説明を行った後、自作 SOL でのプログラムの説明を行います。
2.1 自作 SOL の作成
SOL100での固有値解析プログラム説明の前に、自作
SOL でのプログラムの説明を簡単に行っておきます。
記述は、以下の通りです

例1）SOL TEST01メッセージ表示
SOL TEST01
COMPILE TEST01
SUBDMAP TEST01
TYPE PARM,,I,,A1
A1 = 10 $MESSAGE //ʼ A1 = ʻ/A1 $END
上記の例を Femap で設定する場合、SOL 番号を設定するテキストボックスに、“TEST01” と入力してください。また、COMPILE から END までを DMAP として設定してください。実行すると、以下のようにメッセージが F06に表示されます。
^^^A1 =10今回の例では、メッセージを書き出しただけです
が、行列の構築や、バルクデータからのデータ読み込みを追加することにより、汎用性の高いプログラムを作成することができます。

筆者紹介
くわばら まさはる

続きは Web で
日本計算工学会誌「計算工学（Vol.25, No.1）」HP:
http://www.jsces.org/activity/journal/（株）計算力学研究センター所属。Femap with NX
Nastran の SE と し て20年 勤 務。 受 託 解 析、 製 品 サポートを担当。

Vol.25, No.1 2020

タイトルに関しては、英数8文字以内で設定します。
Femap を 使 用 す る 場 合、SOL の タ イ ト ル は、 前 回
SOL100の設定時に “100” を入力した部分に、タイトルをそのまま入力します。
それ以外は、DMAP の設定部分に入力してください。

（25）

チュートリアル3

Femap with NX Nastran – DMAP 入門（3）

SOL100での固有値計算

ここでは、SOL100を使用して、固有値計算を行うプログラムを作成します。
SOL100は、BULK データから基本的な内容のみを読み込むだけの機能です。SOL100単体を実行しても、何も解析しません。
他の SOL 番号を使用した場合、すでに存在する解析機能が実行されてしまいますが、SOL100では、DMAPで設定したプログラムをそのまま反映することができます。
まず、固有値計算の準備として、BULK データから行列を呼び出す設定を行います。
3.1 DMI のバルクデータ設定
解析モデルを作成せず、任意の行列をバルクデータに設定し、読み込みます。
書式が複雑なので、大規模な行列を設定するには向いていません。
表1

カラム1
カラム2
カラム3
カラム4
カラム5
カラム6
カラム7
カラム8
カラム9

DMI フォーマット

1行目
DMI
タイトル0タイプ
入力時精度
出力時精度
空白
行数
列数

B1は、以下のマトリクスになります。

次に、SOL100に DMAP を設定し、上記のマトリクスを取り込みます。
3.2 DMIIN の設定
バルクデータに設定した DMI を、DMAP モジュールの DMIIN を使用して取り込みます。
・DMIIN フォーマットDMIIN DMI,DMINDX/
タイトル1, タイトル2,…, タイトル10
DMI,DMINDX は、決まったテーブルデータ名ですので、そのまま設定してください。
アウトプットのタイトル1から10に、バルクデータに設定した DMI のタイトルを設定します。

2行目以降
DMI
開始列
開始行
数値1
数値2
数値3
数値4
数値5
数値6

例2）DMIIN の設定
DMIIN DMI,DMINDX/A1,B1,,,,,,,, $カラムは、8文字まで入力できるスペースになります。カラム間は、“,” で分けることもできます。
上記数値は、単精度の場合です。倍精度の場合、数値1+2、3+4で一つの数値を入力します。
上記表は、一番単純なフォーマットで記載しています。詳しくは、NASTRAN の『Quick Reference Guide』のDMI をご参照ください。
今回は、剛性マトリクスと質量マトリクスに対応するマトリクスを設定します。

上記を DMAP に設定することにより、DMI の A1,B1のマトリクスを読み込みます。
実際に読み込んだことを確認するためのプログラムを入力し、実行してみます。

例1）DMI の設定
DMI, A1 , 0 , 1 , 1 , 1 ,, 3 , 3
DMI, A1 , 1 , 1 , 1.0 , 2.0 , 0.0
DMI, A1 , 2 , 1 , 2.0 , 3.0 , 4.0
DMI, A1 , 3 , 1 , 0.0 , 4.0 , 5.0
DMI, B1 , 0 , 1 , 1 , 1 ,, 3 , 3DMI, B1 , 1 , 1 , 1.0 , 0.0 , 0.0
DMI, B1 , 2 , 1 , 0.0 , 2.0 , 0.0DMI, B1 , 3 , 1 , 0.0 , 0.0 , 3.0
数値の入力部分は、必ず小数点 “.” が必要です。小数点以降が “0” であれば、0を省略してもかまいません。
上記は、A1が以下のマトリクスになります。

計算工学（25-2）

例3）DMI の読み込み確認
SOL 100COMPILE USERDMAPALTER 2DMIIN DMI,DMINDX/A1,B1,,,,,,,,$
MATPRT A1/$
MATPRT B1/$
CEND…
BEGIN BULKDMI, A1 , 0 , 1 , 1 , 1 ,, 3 , 3DMI, A1 , 1 , 1 , 1.0 , 2.0 , 0.0
DMI, A1 , 2 , 1 , 2.0 , 3.0 , 4.0
DMI, A1 , 3 , 1 , 0.0 , 4.0 , 5.0
DMI, B1 , 0 , 1 , 1 , 1 ,, 3 , 3
DMI, B1 , 1 , 1 , 1.0 , 0.0 , 0.0
DMI, B1 , 2 , 1 , 0.0 , 2.0 , 0.0
DMI, B1 , 3 , 1 , 0.0 , 0.0 , 3.0…
ENDDATA

Vol.25, No.1 2020

チュートリアル

Femap with NX Nastran – DMAP 入門（3）例3）を Femap で設定を行う場合には、以下の『解析セット』マネージャの［解析タイプ］に “2.. ノーマル モー
ド / 固有値解析” を選択して、設定を行ってください。

3.3 固有値計算の設定読み込んだデータを元に、固有値計算を行います。
固有値計算には READ モジュールを使用します。
今回は、以下の設定を使用します。
READ A1,B1,,,DYNAMICS,,,,,,,,,/
LAMA,PHIX,MIX,OEIGS,,/'MODES'/S,N,COUNT1////1/$
各パラメータは、以下の内容になります。
表2

引数
A1
B1
DYNAMICSLAMA
PHIXMIXOEIGSʻMODESʼ
COUNT1
1

SOL 100、 お よ び COMPILE か ら MATPRT B1/$ ま では、 前 回 の 例 と 同 様 に、「NASTRAN 実 行 お よ び ソリューションオプション」ダイアログの［解析タイプ / 番号］、および［終了文］ボタンで設定を行ってください。
詳しい設定内容は、前回の例をご参照ください。
例1）の DMI に関しては、「NASTRAN 実行およびソリューションオプション」ダイアログの次に表示される「NASTRAN バルクデータオプション」ダイアログの部分に入力します。

READ フォーマットタイプ入力
入力
入力
出力
出力
出力
出力
オプション
オプション
オプション

内容
剛性マトリクス
質量マトリクス
求める固有値数固有値結果
固有ベクトルモード質量レポート
固有値計算
固有値数
求解法の指定詳しい内容は、『DMAP Programmer's Guide』の READモジュールの項目をご参照ください。
上記のままでは、解析結果が出力されませんので、以下のプログラムを、例3の MATPRT B1と CEND の間に入力します。

上図の赤枠で示されているボタンを押して、表示されるダイアログに、DMI の内容を入力してください。
設定後、解析を実行すると、F06ファイルに以下のようにマトリクスデータが表示されます。

計算工学例4）固有値計算プログラム
TYPE PARM,,I,,COUNT1 $READ A1,B1,,,DYNAMICS,,,,,,,,,/
LAMA,PHIX,MIX,OEIGS,,/'MODES'/S,N,COUNT1////1/$
TABPT LAMA/$
MATPRT PHIX
例3の CEND の前の行に、例4のプログラムを追加します。
また、今回のデータは、Femap を使用した場合の設定となっています。
Femap を使用せず、DAT ファイルのみで処理を行う
場合には、例3の “BEGIN BULK” の下の行に、以下のカードを追加します。
EIGRL,1,,,10,0,,,MASS設定したデータを解析すると、F06に以下の結果が出力されます。

（25-3）

Vol.25, No.1 2020

チュートリアル

Femap with NX Nastran – DMAP 入門（3）

ANS1は、以下のフォーマットで出力されています。
表3

固有値結果マトリクスのフォーマット

COLUMN
12
345

内容固有値
ラジアン
周波数
一般化質量
一般化剛性

以上で、A1、B1に任意のマトリクスを入力することにより、固有値の計算を行うモジュールが作成できました。

PHIX は、マトリクスデータのため、内容を確認しやすいかと思いますが、LAMA はテーブルデータのため、計算結果がわかりにくいです。
LAMAのテーブルデータから、以下のモジュールを使用して、必要なデータをマトリクス形式で取り出します。

4

SOL を新規で設定した固有値計算

次に、今回 SOL100で作成したプログラムを、自作した SOL で作成してみます。
4.1 バルクデータからデータの読み込み
SOL100では、予めバルクデータから、以下のマトリクスを取得する処理が設定されていました。

LAMX ,,LAMA/ANS1/-1/$
上記モジュールは、固有値の結果（LAMA）からマトリクスデータを取り出すことと、マトリクスデータから LAMA のテーブルデータを作成することができます。
今回は、ANS1にマトリクスデータを出力します。
例4のプログラムに、以下のプログラムを追加します。
例5）固有値結果をマトリクスに変換
LAMX ,,LAMA/ANS1/-1/$
MATPRT ANS1/$
上記プログラムを追加して解析を行うと、F06ファイ
ルに、以下のデータが出力されています。

A1,B1,DYNAMICSSOL を自作する場合、上記のデータを取得するプログラムも追加する必要があります。
バルクデータから、今回のデータを読み込むためには、以下のモジュールが必要になります。
- XSORT
バルクデータをテーブルデータとして取得します。
- IFP
バルクデータ内から、各種データを取得します。
XSORT のモジュールは、以下のフォーマットになります。
XSORT ,/BULK,/$BULK に、バルクデータの内容を取得します。
IFP モジュールは、以下のフォーマットになります。
IFP BULK/GEOM1,EPT,MPT,,,DYNAMIC,GEOM2,,,EPTA,,,,PVT,DMI,DMINDX,,,,,,,,,////////// $各パラメータは、以下の内容になります。
表4

引数
BULK
GEOM1
EPT
MPT
DYNAMIC
GEOM2
EPTA
PVT
DMI
DMINDX
計算工学（25-4）IFP フォーマット

タイプ
入力
出力
出力
出力
出力出力
出力
出力出力出力内容
バルクデータテーブル
ノード情報
プロパティ情報
マテリアル情報
固有値求解のテーブル
スカラポイント情報
エレメント情報PARAM 情報DMIIN のモジュールで使用

Vol.25, No.1 2020

チュートリアル

Femap with NX Nastran – DMAP 入門（3）詳 し い 内 容 は、『DMAP Programmer's Guide』 のXSORT、IFP モジュールの項目をご参照ください。

表5カラム1
カラム2
カラム3
カラム4
カラム5
カラム6
カラム7
カラム8
カラム9

今回は、例1）の部分に、以下のプログラムを追加します。
例6）自作 SOL での固有値計算プログラム
SOL TEST01
COMPILE TEST01
SUBDMAP TEST01
XSORT ,/BULK,/$IFP BULK/GEOM1,EPT,MPT,,,DYNAMIC,GEOM2,,,EPTA,,,,PVT,
DMI,DMINDX,,,,,,,,,////////// $DMIIN DMI,DMINDX/A1,B1,,,,,,,, $TYPE PARM,,I,,COUNT1 $READ A1,B1,,,DYNAMIC,,,,,,,,,/
LAMA,PHIX,MIX,OEIGS,,/'MODES'/S,N,COUNT1////1/$
MATPRT PHIX/$LAMX ,,LAMA/ANS1/-1/$
MATPRT ANS1/$
END
CEND
BEGIN BULKEIGRL,1,,,10,0,,,MASS
DMI, A1 , 0 , 1 , 1 , 1 ,, 3, 3
DMI, A1 , 1 , 1 , 1.0 , 2.0 , 0.0
DMI, A1 , 2 , 1 , 2.0 , 3.0 , 4.0
DMI, A1 , 3 , 1 , 0.0 , 4.0 , 5.0
DMI, B1 , 0 , 1 , 1 , 1 ,, 3 , 3
DMI, B1 , 1 , 1 , 1.0 , 0.0 , 0.0
DMI, B1 , 2 , 1 , 0.0 , 2.0 , 0.0
DMI, B1 , 3 , 1 , 0.0 , 0.0 , 3.0
ENDDATAEIGRL フォーマット

1行目EIGRLID
最低周波数
最高周波数
求める固有値の個数
診断結果
ベクトル数
1次モードの指定
正規化の方法詳 し く は、NASTRAN の『Quick Reference Guide』のEIGRL をご参照ください。
EIGRL は、Lanczos 法で固有値計算を行う際のバルクデータカードになります。
今回、上記カード内で、固有値計算で使用するデータは、カラム5の求める固有値数です。
ここで指定した個数の固有値が求まります。
今回の場合、3×3の行列ですので、固有値は3つ出力されますが、この値を2に設定すると、2つしか結果が出力されませんので、ご注意ください。
4.2 Femap でのプログラム設定
例6）のプログラムは、すべて DAT ファイルに書き込
み、NASTRAN で実行した場合の内容ですが、Femapを使用して設定する場合には、以下のように設定を行います。
・SOL TEST01「NASTRAN 実行およびソリューションオプション」
ダイアログの［解析タイプ / 番号］に “TEST01” と入力します。

上記プログラムの赤文字が、追加部分になります。
上記を実行すると、例5）と同じ結果が、F6に出力されます。
4.1.1 EIGRL カードについて
Femap を使用しない場合、追加で設定したカードとして、以下のカードがあります。
EIGRL,1,,,10,0,,,MASS
このデータは、固有値解析の条件を設定するカードで、この情報から “DYNAMIC” のテーブルデータが作成され、計算時に使用されます。

計算工学

・COMPILE TEST01から END まで「NASTRAN 実行およびソリューションオプション」
ダイアログの［終了文 /DMAP］ボタンを押し、表示されるダイアログにデータを入力します。

（25-5）

Vol.25, No.1 2020

チュートリアル

Femap with NX Nastran – DMAP 入門（3）・DMI の A1と B1「NASTRAN バルクデータオプション」ダイアログの［開始文］ボタンを押し、表示されるダイアログにデータを入力します。

・EIGRL データ「NASTRAN モード解析」ダイアログの［所要数］に、計算したい固有値数を設定します。
図1

上記のダイアログで設定した内容が、“EIGRL” カードとして書き出されるため、今回の設定では EIGRLカードを入力する必要はありません。
全ての固有値を計算したい場合、固有値数より大きければ、すべての固有値結果が出力されますので、大きめに値を入れておけば、すべての固有値が計算されます。また、Femap で設定した場合には、上記ダイアログの設定が EIGRL に反映されますので、メソッドを変更して、使用することも可能です。（その場合、別のカード名でカードが設定されます。）

5

実際のカスタマイズについて

5.1 行列計算ソフトとの機能比較
今回の例題では、DMAP の基礎的なプログラムを理解していただくために、自分で設定したマトリクスデータから計算を行うプログラムを作成しました。
自分でマトリクスを用意するのであれば、今回のプログラムの場合、行列計算のアプリケーションの方が、簡便に計算できます。
NASTRAN を使用するメリットは、有限要素法の解析モデルを作成すれば、そこから自動で計算に必要なマトリクスデータを作成することにあります。

計算工学

ソフトウエアでの比較

図1にあるように、DMAP では解析モデルの情報から、計算に必要なマトリクスを作成する機能があります。一方、行列計算ソフトの場合、計算に必要なマト
リクスは、自分で作成する必要があるため、複雑な形状や条件の計算を行う場合、なにがしかのプログラムを作成しておかないと、マトリクスを作成すること自体出来ません。
また、解析結果の確認に関しても、DMAP の場合には、節点、要素 ID の並びから、解析モデルの所定位置に結果を戻す機能があります。しかし、行列計算ソフトにはありませんので、複雑な形状での解析結果の場合、ID を予めそろえておかない限り、ポスト処理は困難になります。
5.2 DMAP でのカスタマイズ
今回のプログラムでは、固有値計算に必要なデータのみをバルクデータから取得する方法を使用しました。ですが、実際の固有値解析の場合、さらに複数のモジュールを使用して、剛性マトリクス、質量マトリクス、拘束条件を呼び出して、解析を実施します。
もし、今回のプログラムに対して、有限要素モデルからそれぞれのマトリクスを取り出すようにカスタマイズする場合、かなりの手間がかかります。（それぞれのマトリクスを取り出すのに、3〜4つのモジュールを使用します。）
また、今回はマトリクスデータから計算したため、
計 算 結 果 を F06に 書 き 出 し ま し た が、 実 際 の モ デ ル
データで解析を行った場合、プリポストで読み込み可能なデータに変換するにも、モジュールで実行する必要があります。
従って、DMAP でカスタマイズを行う場合、以下の手順で行うことにより、1からプログラムを作成するよりも、簡便にプログラムを行うことができます。

（25-6）

Vol.25, No.1 2020

チュートリアル

Femap with NX Nastran – DMAP 入門（3）1. 計算に必要なマトリクスデータと、解析結果データをピックアップする。
2. 必要なデータを使用する、SOL 番号を選択する。
3. 必要なマトリクスデータを使用して計算を行い、解析結果として出力できる元のマトリクスデータに入力しなおす
注意点：
Nastran では、バージョンが異なると DIAG14で出力したプログラムが異なります。
プログラムを修正し、挿入する場合には、ALTER で行番号を指定しますが、この行が異なる場合、プログラムは動作しなくなりますので、プログラムを実行す
る Nastran のバージョンにご注意ください。

6

最後に

今回で、DMAP のチュートリアルは終了となります。
基本的な DMAP でのプログラム方法は、大体説明でき た か と 思 い ま す の で、 細 か い 部 分 は、DMAP の マ
ニュアル、および Nastran で実行して、確認してみてください。

もちろん、通常の解析であれば上記設定を解析できる方がよいのですが、プログラムは複雑になります。
単純な解析機能を確認するのであれば、古い SOL 番号で確認するのも一つの手です。
表6SOL 番号13891112

古い SOL 番号

解析内容
線形静実固有値
直接周波数
直接線形過渡モード法周波数
モード法線形過渡

古い SOL 番号の方が、プログラムは単純ですので、わかりやすいかと思います。
ぜひ、一度 DMAP でプログラムを行ってみてください。今後の Nastran の機能拡張、また FEM 解析に対する理解の一助になればと思います。

また、現在のバージョンで一般的に使用されているSOL 番号ですが、正直機能が多岐にわたり、計算機能の確認だけを行う場合にはわかりにくいかと思います。
単純な線形静解析でも、- リスタート解析- 固着 / 接触- 温度による膨張- 最適化- 初期軸力- サポート拘束などの機能が含まれています。

計算工学（25-7）

Vol.25, No.1 2020