HDF5データタイプ

HDF5は、モデルと結果のデータが階層データフォーマットで含まれるバイナリファイルです。

データベースでは、データセットが階層構造で格納されているため、アプリケーションでのデータセットの追加、削除、または更新が容易です。データベースは、高精度、圧縮、および無制限のデータ量をサポートします。そのオープンなフォーマットと複数のプログラミング言語のサポートは、FEAアプリケーションにとって理想的です。

OptiStruct HDF5出力は、.h5ファイルフォーマットで利用できます。

サポートされている出力要求

サポートされている出力の詳細については、.h5ファイルをご参照ください。

データタイプ

データタイプスキーマを使用して、データベース構造とそのデータセットフォーマットを定義します。データベースは、データセットのノードからなるツリー構造をしています。各データセットでは、ツリー内のパスを識別子として使用し、構造データフォーマットを定義します。スキーマはXMLで、<typedef><group><dataset>などの要素があります。OptiStructのHDF5データの構造の簡単な説明を以下に示します。
1. OptiStructのHDF5データの構造


サポートされているグループ名

HDF5ファイル内のデータは、グループの形式で階層的に構造化されています。最も基本的なツリー内のデータ形式をデータセットと言います。次の表に、現在サポートされているグループとその関連データセットをまとめます。

OptiStruct INPUTグループ

COORDINATE_SYSTEMグループ内のデータセットを以下に示します。
1. OPTISTRUCT/INPUT/COORDINATE_SYSTEM
データセット名 フィールド タイプ 説明
CORD1C CID integer 座標系の識別番号
G1 integer 座標系を定義するための節点ID
G2 integer
G3 integer
DOMAIN_ID integer ドメイン識別子
CORD1R CID integer 座標系の識別番号
G1 integer 座標系を定義するための節点ID
G2 integer
G3 integer
DOMAIN_ID integer ドメイン識別子
CORD1S CID integer 座標系の識別番号
G1 integer 座標系を定義するための節点ID
G2 integer
G3 integer
DOMAIN_ID integer ドメイン識別子
CORD2C CID integer 座標系の識別番号
RID integer 参照座標系の識別番号
A1 double 座標系を定義するための節点ID
A2 double
A3 double
B1 double
B2 double
B3 double
C1 double
C2 double
C3 double
DOMAIN_ID integer ドメイン識別子
CORD2R CID integer 座標系の識別番号
RID integer 参照座標系の識別番号
A1 double 座標系を定義するための節点ID
A2 double
A3 double
B1 double
B2 double
B3 double
C1 double
C2 double
C3 double
DOMAIN_ID integer ドメイン識別子
CORD2S CID integer 座標系ID
RID integer 参照座標系ID
A1 double 座標系を定義するための節点ID
A2 double
A3 double
B1 double
B2 double
B3 double
C1 double
C2 double
C3 double
DOMAIN_ID integer ドメイン識別子
TRANSFORMATION/IDENTITY CID integer 座標系の識別番号
TYPE 整数
座標系のタイプ
1:
直交
2:
Cylindrical
3:
球面
IINDEX 整数 Iデータテーブルの開始位置を表します
RINDEX 整数 Rデータテーブルの開始位置を表します
DOMAIN_ID integer ドメイン識別子
TRANSFORMATION/RDATA DATA ダブル

12個の連続するデータ値ごとに、先頭の3つの要素は、CP座標系の原点のX、Y、Z座標を示します。

その後の9個の要素は、変換マトリックスの成分をベクトル形式で示します。

ELEMENTグループ内のデータセットを以下に示します。
2. OPTISTRUCT/INPUT/ELEMENT
データセット名 フィールド タイプ 説明
CBAR EID integer 要素識別番号
PID integer プロパティ識別番号
GA integer 結合ポイントの節点識別番号
GB integer
FLAG integer 方向ベクトルオプション
= 0
XYZ基準
= 1
XYZ全体
= 2
グリッド
X1 double GAの変位座標系の成分に対して平行なベクトルvの成分、終点Aの成分、終点Aで測定した成分、または基本座標系。これにより、(終端Aから終端Bへのベクトルで)BAR要素の要素座標系の向きを決定します。
X2 double
X3 double
G0 integer オプションでX1、X2、X3を指定するための節点識別番号
PA integer バー終端Aのピンフラグ
PB integer バー終端Bのピンフラグ
W1A double ポイントGAとGBそれぞれにおける変位座標系内または要素座標系内のオフセットベクトルwaおよびwbの成分。
W2A double
W3A double
W1B double
W2B double
W3B double
DOMAIN_ID integer ドメイン識別子
CBEAM EID integer 要素識別番号
PID integer プロパティ識別番号
GA integer 結合ポイントの節点識別番号
GB integer
SA integer 現在未使用
SB integer
X double 方向ベクトルの成分(X1、X2、およびX3から)
G0 integer オプションでX1、X2、X3を指定するための節点識別番号
F integer G0の存在を示すためのフラグ
-1
G0が使用されていないことを意味する
0
G0がアクティブになっていることを意味する
PA integer ビーム終端Aのピンフラグ
PB integer ビーム終端Bのピンフラグ
WA double オフセットベクトルの成分。節点AおよびBの変位座標系または要素座標系において、節点から、せん断中心の軸の終了ポイントまでを測定します。
WB double
DOMAIN_ID integer ドメイン識別子
CBUSH EID integer 要素識別番号
PID integer プロパティ識別番号
GA integer 第1結合ポイントの節点識別番号
GB integer 第2結合ポイントの節点識別番号
FLAG integer 方向ベクトルオプション
= -1
CID
= 0
XYZ基準
= 1
XYZ全体
= 1
グリッド
X1 double GAの変位座標系内のGAを起点とする方向ベクトルの成分
X2 double
X3 double
G0 integer 節点G0を使用して方向ベクトルを指定するための別の方法
CID integer 要素座標系の識別番号
S double GAとGB間の線分に沿った割合としてのスプリング-ダンパの位置
OCID integer スプリング-ダンパオフセットの座標系ID
S1 double OCID座標系でのスプリング-ダンパオフセットの成分
S2 double
S3 double
DOMAIN_ID integer ドメイン識別子
CELAS1 EID integer 要素識別番号
PID integer プロパティエントリの識別番号
G1 double 形状節点またはスカラーポイントの識別番号
G2 double
C1 double GRIDデータのCDエントリによって指定される変位座標系上の成分番号
C2 double
DOMAIN_ID integer ドメイン識別子
CELAS2 EID integer 固有の要素識別番号
K double スプリングの剛性
G1 double 形状節点またはスカラーポイントの識別番号
G2 double
C1 double GRIDデータのCDエントリによって指定される変位座標系上の成分番号
C2 double
GE double 減衰係数
S double 応力係数
DOMAIN_ID integer ドメイン識別子
CHEXA EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合ポイントの節点識別番号
DOMAIN_ID integer ドメイン識別子
CPENTA EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合ポイントの節点識別番号
DOMAIN_ID integer ドメイン識別子
CQUAD4 EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合ポイントの節点識別番号
THETA double 材料方向角(度単位)
ZOFFS double 要素節点によって定義された平面からシェル基準面までのオフセット
TFLAG integer Tの存在を示すためのフラグ
-1
Tが指定されていないことを意味する
他の値はTが指定されていることを意味する
T double 節点における要素の厚さ
MCID integer 材料座標系の識別番号
DOMAIN_ID integer ドメイン識別子
CQUAD8 EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合ポイントの節点識別番号
THETA double 材料方向角(度単位)
ZOFFS double 要素節点によって定義された平面からシェル基準面までのオフセット
TFLAG integer Tの存在を示すためのフラグ
-1
Tが指定されていないことを意味する
他の値はTが指定されていることを意味する
T double 節点における要素の厚さ
MCID integer 材料座標系の識別番号
DOMAIN_ID integer ドメイン識別子
CROD EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合ポイントの節点識別番号
DOMAIN_ID integer ドメイン識別子
CSHEAR EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合ポイントの節点識別番号
DOMAIN_ID integer ドメイン識別子
CTETRA EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合された節点の識別番号
DOMAIN_ID integer ドメイン識別子
CTRIA3 EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合された節点の識別番号
THETA double 材料方向角(度単位)
ZOFFS double 要素節点によって定義された平面からシェル基準面までのオフセット
TFLAG integer Tの存在を示すためのフラグ
-1
Tが指定されていないことを意味する
他の値はTが指定されていることを意味する
T double 節点における要素の厚さ
MCID integer 材料座標系の識別番号
DOMAIN_ID integer ドメイン識別子
CTRIA6 EID integer 要素識別番号
PID integer プロパティ識別番号
G integer 結合された節点の識別番号
THETA double 材料方向角(度単位)
ZOFFS double 要素節点によって定義された平面からシェル基準面までのオフセット
TFLAG integer Tの存在を示すためのフラグ
-1
Tが指定されていないことを意味する
他の値はTが指定されていることを意味する
T double 節点における要素の厚さ
MCID integer 材料座標系の識別番号
DOMAIN_ID integer ドメイン識別子
MATERIALグループ内のデータセットを以下に示します。
3. OPTISTRUCT/INPUT/MATERIAL
データセット名 フィールド タイプ 説明
MAT1 MID integer 材料識別番号
E ダブル ヤング率
G ダブル せん断係数
NU ダブル ポアソン比
RHO ダブル 質量密度
A double 熱膨張係数
TREF ダブル 熱荷重の参照温度
GE double 構造要素の減衰係数
ST double 引張での応力限界
SC ダブル 圧縮での応力限界
SS ダブル せん断での応力限界
MCSID 整数 材料座標系の識別番号
DOMAIN_ID integer ドメイン識別子
NODEグループ内のデータセットを以下に示します。
4. OPTISTRUCT/INPUT/NODE
データセット名 フィールド タイプ 説明
GRID ID integer グリッド識別番号
CP integer 座標系の識別番号
X double 座標系CP内の節点の位置
CD integer 節点において変位、自由度、制約条件、およびソリューションベクトルが定義される座標系の識別番号。
PS integer 節点に関連付けられた永続的な単点拘束
SEIDE integer 現在未使用
DOMAIN_ID integer ドメイン識別子
MATERIALグループ内のデータセットを以下に示します。
5. OPTISTRUCT/INPUT/PROPERTY
データセット名 フィールド タイプ 説明
PBAR PID integer プロパティ識別番号
MID double 材料識別番号
A double 断面の面積
I1 double 平面1の断面2次モーメント
I2 double 平面2の断面2次モーメント
NSM double 断面相乗モーメント
FE double 現在未使用
C1 double 応力リカバリー係数
C2 double
D1 double
D2 double
E1 double
E2 double
F1 double
F2 double
K1 double せん断の面積係数
K2 double
I12 double 断面相乗モーメント
DOMAIN_ID integer ドメイン識別子
PBARL PID integer プロパティ識別番号
MID integer 材料識別番号
GROUP character 任意のビーム断面定義を使用するかどうかを示します
TYPE character 断面のタイプ
INFO_POS integer
INFO_LEN integer
DOMAIN_ID integer ドメイン識別子
PBEAM PID integer プロパティ識別番号
MID integer 材料識別番号
NSEGS integer 断面の数
CCF integer 現在未使用
CWELD integer 現在未使用
SECTION BEAM_SECTION これは、ビームの断面プロパティを定義するために使用される係数のグループです。
K1 double 平面1のせん断剛性係数
K2 double 平面2のせん断剛性係数
S1 double せん断リリーフ係数
S2 double
NSIA double 終端Aにおける非構造質量重心周りの単位長さあたりの非構造質量慣性モーメント
NSIB double 終端Bにおける非構造質量重心周りの単位長さあたりの非構造質量慣性モーメント
CWA double 終端Aの反り係数
CWB double 終端Bの反り係数
M1A double 終端Aにおける非構造質量の重心の(y,z)座標
M2A double
M1B double 終端Bにおける非構造質量の重心の(y,z)座標
M2B double
N1A double 終端Aにおける中立軸の(y,z)座標
N2A double
N1B double 終端Bにおける中立軸の(y,z)座標
N2B double
DOMAIN_ID integer ドメイン識別子
PBUSH PID integer プロパティ識別番号
K double 方向1~6の公称剛性値
B double 方向1~6の公称減衰係数
GE double 方向1~6の公称構造減衰定数
SA double 並進成分の応力リカバリー係数
ST double 回転成分の応力リカバリー係数
EA double 並進成分のひずみリカバリー係数
ET double 回転成分のひずみリカバリー係数
M double 方向1~6の公称質量値
DOMAIN_ID integer ドメイン識別子
PELAS PID integer プロパティ識別番号
K double 弾性プロパティ値
GE double 減衰係数
S double 応力係数
DOMAIN_ID integer ドメイン識別子
PSHEAR PID integer プロパティ識別番号
MID integer 材料識別番号
T double せん断パネルの厚み
NSM double 単位面積あたりの非構造質量
F1 double エッジ1-2および3-4に沿った引張剛性の有効係数
F2 double エッジ2-3および1-4に沿った引張剛性の有効係数
DOMAIN_ID integer ドメイン識別子
PSHELL PID integer プロパティ識別番号
MID1 integer 膜の材料識別番号
T double 膜厚
MID2 integer 曲げの材料識別番号
BK double 現在未使用
MID3 integer 横せん断の材料識別番号
TS double 横せん断厚を膜厚で割った値
NSM double 単位面積あたりの非構造質量
Z1 double 応力計算用の板厚方向距離
Z2 double
MID4 integer 膜-曲げ連成の材料識別番号
DOMAIN_ID integer ドメイン識別子
PSOLID PID integer プロパティ識別番号
MID integer 材料識別番号
CORDM integer 材料座標系のMID
IN integer 統合ネットワーク
STRESS integer 応力出力の位置選択
ISOP integer 弾塑性陰的非線形静解析の積分スキーム。
FCTN character 流体要素フラグ
DOMAIN_ID integer ドメイン識別子

OptiStruct RESULTSグループ

ACOUSTICグループ内のデータセットを以下に示します。
6. OPTISTRUCT/RESULT/ACOUSTIC
データセット名 フィールド タイプ 説明
PRESSURE_CPLX ID integer ポイント識別番号
PR ダブル 音圧(実数)
PRMSR ダブル RMS音圧(実数)
DBR ダブル dB単位の音圧(実数)
DBAR ダブル dBA単位の音圧(実数)
PI ダブル 音圧(虚数)
PRMSI ダブル RMS音圧(虚数)
DBI ダブル dB単位の音圧(虚数)
DBAI ダブル dBA単位の音圧(虚数)
DOMAIN_ID integer ドメイン識別子
ELEMENTAL/ELEMENT_FORCEグループ内のデータセットを以下に示します。
7. OPTISTRUCT/RESULT/ELEMENTAL/ELEMENT_FORCE
データセット名 フィールド タイプ 説明
BAR EID integer 要素識別番号
BM1A double 終端A平面1における曲げモーメント
BM2A double 終端A平面2における曲げモーメント
BM1B double 終端B平面1における曲げモーメント
BM2B double 終端B平面2における曲げモーメント
TS1 double 平面1におけるせん断
TS2 double 平面2におけるせん断
AF double 軸力
TRA integer トルク
DOMAIN_ID integer ドメイン識別子
BEAM EID integer 要素識別番号
FORCE integer BEAMの要素力構造
DOMAIN_ID integer ドメイン識別子
BUSH EID integer 要素識別番号
FX double 力x
FY double 力y
FZ double 力z
MX double 膜力x
MY double 膜力y
MZ integer z方向の曲げモーメント
DOMAIN_ID integer ドメイン識別子
CONROD/ROD EID integer 要素識別番号
AF double 軸力
TRQ double トルク
DOMAIN_ID integer ドメイン識別子
ELAS1 EID integer 要素識別番号
F double
DOMAIN_ID integer ドメイン識別子
TRIA3/QUAD4 EID integer 要素識別番号
FORCE double
DOMAIN_ID integer ドメイン識別子
QUAD8 EID integer 要素識別番号
TERM character 文字列
FORCE double
DOMAIN_ID integer ドメイン識別子
ROD EID integer 要素識別番号
AF character 軸力
TRQ double トルク
DOMAIN_ID integer ドメイン識別子
SHEAR EID integer 要素識別番号
F41 double 力4→力1
F21 double 力2→力1
F12 double 力1→力2
F32 double 力3→力2
F23 double 力2→力3
F43 double 力4→力3
F14 double 力1→力4
KF1 double 1のキック力
S12 double せん断1 2
KF2 double 2のキック力
S23 double せん断2 3
KF3 double 3のキック力
S34 double せん断3 4
KF4 double 4のキック力
S41 double せん断4 1
DOMAIN_ID integer ドメイン識別子
TRIA6 EID integer 要素識別番号
TERM character 位置
FORCE double typedefセクションで定義されるデータ構造
DOMAIN_ID integer ドメイン識別子
ELEMENTAL/STRESSグループ内のデータセットを以下に示します。
8. OPTISTRUCT/RESULT/ELEMENTAL/STRESS
データセット名 フィールド タイプ 説明
BAR EID integer 要素識別番号
X1A double SA1
X2A double SA2
X3A double SA3
X4A double SA4
X double
MAXA double SA最大
MINA double SA最小
MST double 引張の安全余裕度
X1B double SB1
X2B double SB2
X3B double SB3
X4B double SB4
MAXB double SB最大
MINB double SB最小
MSC double 圧縮の安全余裕度
DOMAIN_ID integer ドメイン識別子
BAR_CPLX EID integer 要素識別番号
X1AR ダブル SA1(実数)
X2AR ダブル SA2(実数)
X3AR ダブル SA3(実数)
X4AR ダブル SA4(実数)
AXR ダブル 軸(実数)
X1AI ダブル SA1(虚数)
X2AI ダブル SA2(虚数)
X3AI ダブル SA3(虚数)
X4AI ダブル SA4(虚数)
AXI ダブル 軸(虚数)
X1BR ダブル SB1(実数)
X2BR ダブル SB2(実数)
X3BR ダブル SB3(実数)
X4BR ダブル SB4(実数)
X1BI ダブル SB1(虚数)
X2BI ダブル SB2(虚数)
X3BI ダブル SB3(虚数)
X4BI ダブル SB4(虚数)
DOMAIN_ID integer ドメイン識別子
BEAM EID integer 要素識別番号
GRID 整数 節点識別番号
SD ダブル ステーションの距離を長さで割った値
XC ダブル ポイントCにおける縦方向応力
XD ダブル ポイントDにおける縦方向応力
XE ダブル ポイントEにおける縦方向応力
XF ダブル ポイントFにおける縦方向応力
MAX ダブル 最大応力
MIN ダブル 最小応力
MST double 安全余裕度(引張)
MSC double 安全余裕度(圧縮)
DOMAIN_ID integer ドメイン識別子
BEAM_CPLX EID integer 要素識別番号
GRID 整数 節点識別番号
SD
XCR ダブル ポイントCにおける縦方向応力(実数)
XDR ダブル ポイントDにおける縦方向応力(実数)
XER ダブル ポイントEにおける縦方向応力(実数)
XFR ダブル ポイントFにおける縦方向応力(実数)
XCI ダブル ポイントCにおける縦方向応力(虚数)
XDI ダブル ポイントDにおける縦方向応力(虚数)
XEI ダブル ポイントEにおける縦方向応力(虚数)
XFI ダブル ポイントFにおける縦方向応力(虚数)
DOMAIN_ID integer ドメイン識別子
BUSH EID integer 要素識別番号
TX double x方向のせん断力
TY double y方向のせん断力
TZ double z方向のせん断力
RX double x方向の回転
MY double y方向の回転
MZ integer z方向の回転
DOMAIN_ID integer ドメイン識別子
CONROD/ROD EID integer 要素識別番号
AF double 軸力
TRQ double トルク
DOMAIN_ID integer ドメイン識別子
ELAS1 EID integer 要素識別番号
S double 応力
DOMAIN_ID integer ドメイン識別子
HEXA EID integer 要素識別番号
CID integer 応力座標系
CTYPE character 座標系タイプ(BCD)
NODEF integer アクティブポイントの数
SS - 節点応力構造
DOMAIN_ID integer ドメイン識別子
HEXA_CPLX EID integer 要素識別番号
CID integer 応力座標系
CTYPE character 座標系タイプ(BCD)
NODEF integer アクティブポイントの数
SS - 節点応力構造(複素数)
DOMAIN_ID integer ドメイン識別子
PENTA EID integer 要素識別番号
CID integer 応力座標系
CTYPE character 座標系タイプ(BCD)
NODEF integer アクティブポイントの数
SS - 節点応力構造
DOMAIN_ID integer ドメイン識別子
PENTA_CPLX EID integer 要素識別番号
CID integer 応力座標系
CTYPE character 座標系タイプ(BCD)
NODEF integer アクティブポイントの数
SS - 節点応力構造(複素数)
DOMAIN_ID integer ドメイン識別子
ROD EID integer 要素識別番号
A double 軸応力
MSA double 軸の安全余裕度
T double 合計応力
MST double 引張の安全余裕度
DOMAIN_ID integer ドメイン識別子
ROD_CPLX EID integer 要素識別番号
AR ダブル 軸応力(実数)
AI ダブル 軸応力(虚数)
TR ダブル 合計応力(実数)
TI ダブル 合計応力(虚数)
DOMAIN_ID integer ドメイン識別子
SHEAR EID integer 要素識別番号
TMAX double 最大せん断
TAVG double 平均せん断
MS double 安全余裕度
DOMAIN_ID double ドメイン識別子
TETRA EID integer 要素識別番号。
CID integer 応力座標系
CTYPE character 座標系タイプ(BCD)
NODEF integer アクティブポイントの数。
SS GRID_SS 節点のひずみと応力の構造。
DOMAIN_ID integer ドメイン識別子
TRIA3 EID integer 要素識別番号。
AR ダブル 軸応力(実数)
AI ダブル 軸応力(虚数)
TR ダブル 合計応力(実数)
TI ダブル 合計応力(虚数)
DOMAIN_ID integer ドメイン識別子
TRIA3_CPLX EID integer 要素識別番号
FD1 double 繊維距離(Z1)
X1R ダブル Z1におけるX方向の法線(実数)
X1I ダブル Z1におけるX方向の法線(虚数)
Y1R ダブル Z1におけるY方向の法線(実数)
Y1I ダブル Z1におけるY方向の法線(虚数)
TXY1R ダブル Z1におけるXY方向のせん断(実数)
TXY1I ダブル Z1におけるXY方向のせん断(虚数)
FD2 double 繊維距離(Z2)
X2R ダブル Z2におけるX方向の法線(実数)
X2I ダブル Z2におけるX方向の法線(虚数)
Y2R ダブル Z2におけるY方向の法線(実数)
Y2I ダブル Z2におけるY方向の法線(虚数)
TXY2R ダブル Z2におけるXY方向のせん断(実数)
TXY2I ダブル Z2におけるXY方向のせん断(虚数)
DOMAIN_ID integer ドメイン識別子
TRIA6 EID integer 要素識別番号。
TERM character 位置
GRID 整数 節点識別番号
FD1 double 繊維距離(Z1)
X1 double Z1におけるX方向の法線
Y1 double Z1におけるY方向の法線
XY1 double Z1におけるXY方向のせん断
FD2 double 繊維距離(Z2)
X2 double Z2におけるX方向の法線
Y2 double Z2におけるY方向の法線
XY2 double Z2におけるXY方向のせん断
DOMAIN_ID integer ドメイン識別子
TRIA6_CPLX EID integer 要素識別番号
TERM character 位置
GRID 整数 節点識別番号
FD1 double 繊維距離(Z1)
X1R ダブル Z1におけるX方向の法線(実数)
X1I ダブル Z1におけるX方向の法線(虚数)
Y1R ダブル Z1におけるY方向の法線(実数)
Y1I ダブル Z1におけるY方向の法線(虚数)
XYIR ダブル Z1におけるXY方向のせん断(実数)
XY1I ダブル Z1におけるXY方向のせん断(虚数)
FD2 double 繊維距離(Z2)
X2R ダブル Z2におけるX方向の法線(実数)
X2I ダブル Z2におけるX方向の法線(虚数)
XY2R ダブル Z2におけるXY方向のせん断(実数)
XY2I ダブル Z2におけるXY方向のせん断(虚数)
DOMAIN_ID integer ドメイン識別子
QUAD4 EID integer 要素識別番号
FD1 double 繊維距離(Z1)
X1 double Z1におけるX方向の法線
Y1 double Z1におけるY方向の法線
XY1 double Z1におけるXY方向のせん断
FD2 double 繊維距離(Z2)
X2 double Z2におけるX方向の法線
Y2 double Z2におけるY方向の法線
XY2 double Z2におけるXY方向のせん断
DOMAIN_ID integer ドメイン識別子
QUAD4_CPLX EID integer 要素識別番号
FD1 double 繊維距離(Z1)
X1R ダブル Z1におけるX方向の法線(実数)
X1I ダブル Z1におけるX方向の法線(虚数)
Y1R ダブル Z1におけるY方向の法線(実数)
Y1I ダブル Z1におけるY方向の法線(虚数)
TXY1R ダブル Z1におけるXY方向のせん断(実数)
TXY1I ダブル Z1におけるXY方向のせん断(虚数)
FD2 double 繊維距離(Z2)
X2R ダブル Z2におけるX方向の法線(実数)
X2I ダブル Z2におけるX方向の法線(虚数)
Y2R ダブル Z2におけるY方向の法線(実数)
Y2I ダブル Z2におけるY方向の法線(虚数)
TXY2R ダブル Z2におけるXY方向のせん断(実数)
TXY2I ダブル Z2におけるXY方向のせん断(虚数)
DOMAIN_ID integer ドメイン識別子
QUAD8 EID integer 要素識別番号
TERM character 文字列
GRID 整数 節点識別番号
FD1 double 繊維距離(Z1)
X1 double Z1におけるX方向の法線
Y1 double Z1におけるY方向の法線
XY1 double Z1におけるXY方向のせん断
FD2 double 繊維距離(Z2)
X2 double Z2におけるX方向の法線
Y2 double Z2におけるY方向の法線
DOMAIN_ID integer ドメイン識別子
QUAD8_CPLX EID integer 要素識別番号
TERM character 文字列
GRID 整数 節点識別番号
FD1 double 繊維距離(Z1)
X1R ダブル Z1におけるX方向の法線(実数)
X1I ダブル Z1におけるX方向の法線(虚数)
Y1R ダブル Z1におけるY方向の法線(実数)
Y1I ダブル Z1におけるY方向の法線(虚数)
XY1R ダブル Z1におけるXY方向のせん断(実数)
XY1I ダブル Z1におけるXY方向のせん断(虚数)
FD2 double 繊維距離(Z2)
X2R ダブル Z2におけるX方向の法線(実数)
X2I ダブル Z2におけるX方向の法線(虚数)
Y2R ダブル Z2におけるY方向の法線(実数)
Y2I ダブル Z2におけるY方向の法線(虚数)
DOMAIN_ID integer ドメイン識別子
注: これらのデータセットは、ELEMENTAL/STRAINグループにも適用できます。
NODALグループ内のデータセットを以下に示します。
9. OPTISTRUCT/RESULT/NODAL
データセット名 フィールド タイプ 説明
APPLIED_LOAD ID integer グリッド識別番号
X double X成分
Y double Y成分
Z double Z成分
RX double RX成分
RY double RY成分
RZ double RZ成分
DOMAIN_ID integer ドメイン識別子
DISPLACEMENT ID integer グリッド識別番号
X double X成分
Y double Y成分
Z double Z成分
RX double RX成分
RY double RY成分
RZ double RZ成分
_nmd_5rb"> DOMAIN_ID integer ドメイン識別子
DISPLACEMENT_CPLX ID integer グリッド識別番号
XR ダブル X成分(実数)
YR ダブル Y成分(実数)
ZR ダブル Z成分(実数)
RXR ダブル RX成分(実数)
RYR ダブル RY成分(実数)
RZR ダブル RZ成分(実数)
XI ダブル X成分(虚数)
YI ダブル Y成分(虚数)
ZI ダブル Z成分(虚数)
RXI ダブル RX成分(虚数)
RYI ダブル RY成分(虚数)
RZI ダブル RZ成分(虚数)
DOMAIN_ID integer ドメイン識別子
EIGENVECTOR ID integer グリッド識別番号
X double X成分
Y double Y成分
Z double Z成分
RX double RX成分
RY double RY成分
RZ double RZ成分
DOMAIN_ID integer ドメイン識別子
MPC_FORCE ID integer グリッド識別番号
X double X成分
Y double Y成分
Z double Z成分
RX double RX成分
RY double RY成分
RZ double RZ成分
DOMAIN_ID integer ドメイン識別子
SPC_FORCE ID integer グリッド識別番号
X double X成分
Y double Y成分
Z double Z成分
RX double RX成分
RY double RY成分
RZ double RZ成分
DOMAIN_ID integer ドメイン識別子

データの読み取り

ここでは、CとPythonでの読み取りの例を示します。

最小要件は次のとおりです:
  • Python: h5pynumpy
  • C: hdf5およびhdf5_hlライブラリ

Pythonの例1:.h5ファイルからの変位の読み取り

この例は、.h5ファイルからの変位データを読み取ります。
# ****************************************************** 
# Example 1: Reading displacement from h5 file
# ****************************************************** 

import h5py
def ex1():
    # file path
    inp_file = "cbar_strstn_static.h5"

    # open file in read-only mode
    f = h5py.File(inp_file, "r")

    # DISPLACEMENT path
    disp_path = "/OPTISTRUCT/RESULT/NODAL/DISPLACEMENT"

    # acquire DISP table
    t = f[disp_path]

    # print data
    print('DISPLACEMENT:\n')
    print(t[:])
    f.close()

if __name__ == "__main__":
    ex1()

Pythonの例2:.h5ファイル内の変位からの特定データの読み取り

この例では、変位の特定データへのアクセス方法を示します。ここでは、データがフィルタリングされ、節点17の変位が取得されます。
# ****************************************************** 
# Example 2: Reading specific data from displacement in h5 file
# ****************************************************** 

# In this example, some senior functions would be used
# to show how to access specific data

import h5py
import numpy as np

def ex1_2():
    # file path
    inp_file = "cbar_strstn_static.h5"

    # open file in read-only mode
    f = h5py.File(inp_file, "r")

    # DISPLACEMENT path
    disp_path = "/OPTISTRUCT/RESULT/NODAL/DISPLACEMENT"

    # acquire DISP table
    t = f[disp_path]

    # 1. query all field name in this table
    print("All fields in DISP table:\n")
    for name in t.dtype.fields.keys():
        print(name, end="  ")

    # 2. filter ID data

    fn = 'ID'
    ids = t[fn]
    print("All ID:\n")
    print(ids[:])

    # 3. get disp of grid 17
    # for this one, numpy is needed

    id = 17
    arr_ids = np.array(ids)
    idx = np.where(arr_ids == id)
    disp_17 = t[idx]

    print("The DISP of grid 17: \n")
    print(disp_17)
    f.close()


if __name__ == "__main__":
    ex1_2()

Pythonの例3:.h5ファイルからの応力の読み取り

この例では、.h5ファイル(dang_van_tbl_smallshr.h5)からのCHEXA応力結果の読み取りを示します。
# ****************************************************** 
# Example 3: Reading CHEXA stresses from h5 file
# ****************************************************** 

import h5py

def printbable(name, n):

    if isinstance(n, h5py.Dataset):
        # this is a dataset(table)
        print("the data of {} is :\n".format(name))
        print(n[:])

def ex2():
    inp_file = "dang_van_tbl_smallshr.h5"

    # open file in read-only mode
    f = h5py.File(inp_file, 'r')

    stress_path = '/OPTISTRUCT/RESULT/ELEMENTAL/STRESS'

    # visit all table under STRESS group and print them out

    g = f[stress_path]
    g.visititems(printbable)


if __name__ == "__main__":
    ex2()


    fn = 'ID'

Cの例

メイン関数は次のように与えられます:
#include "ex.h"

int main() {
    ex2();
} 
#ifndef CEXPFORH5_EX_H
#define CEXPFORH5_EX_H

int ex1();
int ex2();

#endif //CEXPFORH5_EX_H

Cの例1:変位の読み取りと出力

この例では、.h5ファイル(cbar_strstn_static.h5)からのCHEXA応力の読み取りを示します。
# ****************************************************** 
# Example 1: Reading displacements and printing
# ****************************************************** 
#include "hdf5.h"
#include "hdf5_hl.h"
#include <stdlib.h>

#include "ex.h"

#define FILE    "cbar_strstn_static.h5"
#define TABLE_NAME "/OPTISTRUCT/RESULT/NODAL/DISPLACEMENT"

typedef struct Disp {
    long long id;   // grid id
//    double d[6];  // displacement
    double x;
    double y;
    double z;
    double rx;
    double ry;
    double rz;
    long long domid;  //domain_id
} Disp;

int ex1() {

    herr_t re = 0;

    size_t dst_size = sizeof(Disp);
    size_t dst_offset[]=  {
        HOFFSET(Disp,id),
        HOFFSET(Disp, x),
        HOFFSET(Disp, y),
        HOFFSET(Disp, z),
        HOFFSET(Disp, rx),
        HOFFSET(Disp, ry),
        HOFFSET(Disp, rz),
        HOFFSET(Disp,domid)
    };

    Disp disp;
    size_t dst_sizes[] = {
        sizeof(disp.id),
        sizeof(disp.x),
        sizeof(disp.y),
        sizeof(disp.z),
        sizeof(disp.rx),
        sizeof(disp.ry),
        sizeof(disp.rz),
        sizeof(disp.domid)
    };

    //open file in read-only mode
    hid_t file_id = H5Fopen(FILE,H5F_ACC_RDONLY,H5P_DEFAULT);
    if (file_id < 0) {
        printf("Error: file %s is not here\n",FILE);
        return 0;
    }

    hsize_t nfields, nrecords;
    /* Get table info */
    if (H5TBget_table_info(file_id,TABLE_NAME,&nfields,&nrecords) < 0) {
        printf("Error: Table %s is not here\n",TABLE_NAME);
        goto endact;
    }
    if (nrecords == 0 || nfields == 0) {
        printf("The nrecords or nfields of %s is 0, return\n",TABLE_NAME);
        goto endact;
    }

    Disp* dst_buf = NULL;
    dst_buf = (Disp*)malloc(nrecords * dst_size);
    if (!dst_buf) {
        printf("Error: malloc for rstbuf fail\n");
        goto endact;
    }

    // read disp
    if (H5TBread_table(file_id,TABLE_NAME,dst_size,dst_offset,dst_sizes,dst_buf) < 0) {
        printf("Error: read table fail\n");
        goto clearmem;
    }

    //print disp
    for (int i = 0; i < nrecords;i++) {
        printf("GRID %lld: %e, %e, %e, %e, %e, %e, %lld\n",
               dst_buf[i].id,
               dst_buf[i].x,
               dst_buf[i].y,
               dst_buf[i].z,
               dst_buf[i].rx,
               dst_buf[i].ry,
               dst_buf[i].rz,
               dst_buf[i].domid);
    }

clearmem:
    if (dst_buf!=NULL) free(dst_buf);
endact:
    H5Fclose(file_id);

    return 0;
}

Cの例2:CHEXA要素からの応力の読み取りと出力

この例は、.h5ファイル(dang_van_tbl_smallshr.h5)内の配列を操作する手順の理解にも役立ちます。
# ****************************************************** 
# Example 2: Reading stresses from CHEXA element and printing
# ****************************************************** 

#include "hdf5.h"
#include "hdf5_hl.h"
#include <stdlib.h>

#include "ex.h"
#define FILE    "dang_van_tbl_smallshr.h5"
#define TABLE_NAME "/OPTISTRUCT/RESULT/ELEMENTAL/STRESS/HEXA"
typedef struct HEXA {
    long long id;   // grid id
    long long cid;
    char ctype[8];
    long long nodef;
    long long grid[9];
    double x[9];
    double y[9];
    double z[9];
    double rx[9];
    double ry[9];
    double rz[9];
    long long domid;  //domain_id
} HEXA;

int ex2 () {
    herr_t re = 0;

    size_t dst_size = sizeof(HEXA);
    size_t dst_offset[]=  {
            HOFFSET(HEXA,id),
            HOFFSET(HEXA,cid),
            HOFFSET(HEXA,ctype),
            HOFFSET(HEXA,nodef),
            HOFFSET(HEXA,grid),
            HOFFSET(HEXA, x),
            HOFFSET(HEXA, y),
            HOFFSET(HEXA, z),
            HOFFSET(HEXA, rx),
            HOFFSET(HEXA, ry),
            HOFFSET(HEXA, rz),
            HOFFSET(HEXA,domid)
    };

    HEXA hexa;
    size_t dst_sizes[] = {
            sizeof(hexa.id),
            sizeof(hexa.cid),
            sizeof(hexa.ctype),
            sizeof(hexa.nodef),
            sizeof(hexa.grid),
            sizeof(hexa.x),
            sizeof(hexa.y),
            sizeof(hexa.z),
            sizeof(hexa.rx),
            sizeof(hexa.ry),
            sizeof(hexa.rz),
            sizeof(hexa.domid)
    };

    //open file in read-only mode
    hid_t file_id = H5Fopen(FILE,H5F_ACC_RDONLY,H5P_DEFAULT);
    if (file_id < 0) {
        printf("Error: file %s is not here\n",FILE);
        return 0;
    }

    hsize_t nfields, nrecords;
    /* Get table info */
    if (H5TBget_table_info(file_id,TABLE_NAME,&nfields,&nrecords) < 0) {
        printf("Error: Table %s is not here\n",TABLE_NAME);
        goto endact;
    }
    if (nrecords == 0 || nfields == 0) {
        printf("The nrecords or nfields of %s is 0, return\n",TABLE_NAME);
        goto endact;
    }

    HEXA* dst_buf = NULL;
    dst_buf = (HEXA*)malloc(nrecords * dst_size);
    if (!dst_buf) {
        printf("Error: malloc for rstbuf fail\n");
        goto endact;
    }

    // read disp
    if (H5TBread_table(file_id,TABLE_NAME,dst_size,dst_offset,dst_sizes,dst_buf) < 0) {
        printf("Error: read table fail\n");
        goto clearmem;
    }

    //print disp
    for (int i = 0; i < nrecords;i++) {
        printf("HEXA %lld: %lld, %s, %lld, %lld\n",
               dst_buf[i].id,
               dst_buf[i].cid,
               dst_buf[i].ctype,
               dst_buf[i].nodef,
               dst_buf[i].domid);

        for (int j = 0; j < 9 ;j++) {
            printf("\t %lld, %e, %e, %e, %e, %e, %e",
                   dst_buf[i].grid[j],
                   dst_buf[i].x[j],
                   dst_buf[i].y[j],
                   dst_buf[i].z[j],
                   dst_buf[i].rx[j],
                   dst_buf[i].ry[j],
                   dst_buf[i].rz[j]);
        }
        printf("\n");
    }

    clearmem:
    if (dst_buf!=NULL) free(dst_buf);
    endact:
    H5Fclose(file_id);

    return 0;
}