HDF5データタイプ
HDF5は、モデルと結果のデータが階層データフォーマットで含まれるバイナリファイルです。
データベースでは、データセットが階層構造で格納されているため、アプリケーションでのデータセットの追加、削除、または更新が容易です。データベースは、高精度、圧縮、および無制限のデータ量をサポートします。そのオープンなフォーマットと複数のプログラミング言語のサポートは、FEAアプリケーションにとって理想的です。
OptiStruct HDF5出力は、.h5ファイルフォーマットで利用できます。これは、結果データのみが含まれる.hdf5(旧)ファイルフォーマットとは異なります。
サポートされている出力要求
サポートされている出力の詳細については、.h5ファイルをご参照ください。
データタイプ
<typedef>
、<group>
、<dataset>
などの要素があります。OptiStructのHDF5データの構造の簡単な説明を以下に示します。
図 1. OptiStructのHDF5データの構造
サポートされているグループ名
HDF5ファイル内のデータは、グループの形式で階層的に構造化されています。最も基本的なツリー内のデータ形式をデータセットと言います。次の表に、現在サポートされているグループとその関連データセットをまとめます。
OptiStruct INPUTグループ
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
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 | ドメイン識別子 |
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
CBAR | EID | integer | 要素識別番号。 |
PID | integer | プロパティ識別番号。 | |
GA | integer | 結合ポイントの節点識別番号。 | |
GB | integer | ||
FLAG | integer | 方向ベクトルオプション
|
|
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の存在を示すためのフラグ
|
|
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 | 方向ベクトルオプション:
|
|
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の存在を示すためのフラグ。
|
|
T | double | 節点における要素の厚さ。 | |
MCID | integer | 材料座標系識別番号。 | |
DOMAIN_ID | integer | ドメイン識別子 | |
CQUAD8 | EID | integer | 要素識別番号。 |
PID | integer | プロパティ識別番号。 | |
G | integer | 結合ポイントの節点識別番号。 | |
THETA | double | 材料方向角(度単位)。 | |
ZOFFS | double | 要素節点によって定義された平面からシェル基準面までのオフセット。 | |
TFLAG | integer | Tの存在を示すためのフラグ。
|
|
T | double | 節点における要素の厚さ。 | |
MCID | 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の存在を示すためのフラグ。
|
|
T | double | 節点における要素の厚さ。 | |
MCID | integer | 材料座標系識別番号。 | |
DOMAIN_ID | integer | ドメイン識別子 | |
CTRIA6 | EID | integer | 要素識別番号。 |
PID | integer | プロパティ識別番号。 | |
G | integer | 結合された節点の識別番号。 | |
THETA | double | 材料方向角(度単位)。 | |
ZOFFS | double | 要素節点によって定義された平面からシェル基準面までのオフセット。 | |
TFLAG | integer | Tの存在を示すためのフラグ。
|
|
T | double | 節点における要素の厚さ。 | |
MCID | integer | 材料座標系識別番号。 | |
DOMAIN_ID | integer | ドメイン識別子 |
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
GRID | ID | integer | グリッド識別番号。 |
CP | integer | 座標系の識別番号。 | |
X | double | 座標系CP内の節点の位置。 | |
CD | integer | 節点において変位、自由度、制約条件、およびソリューションベクトルが定義される座標系の識別番号。 | |
PS | integer | 節点に関連付けられる永続的な単点拘束。 | |
SEIDE | integer | 現在未使用 | |
DOMAIN_ID | integer | ドメイン識別子 |
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
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グループ
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
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 | ドメイン識別子 |
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
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 | ドメイン識別子 | |
BEAM* | EID | integer | 要素識別番号 |
SS | integer | BEAMのひずみと応力の構造 | |
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 | ドメイン識別子 | |
TRIA3*/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 | ドメイン識別子 | |
QUAD8* | EID | integer | 要素識別番号 |
TERM | character | 文字列 | |
SS | double | typedefセクションで定義されるデータ構造。 | |
DOMAIN_ID | integer | ドメイン識別子 | |
ROD* | EID | integer | 要素識別番号 |
A | double | 軸応力 | |
MSA | double | 軸の安全余裕度 | |
T | double | 合計応力 | |
MST | double | 引張の安全余裕度 | |
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 | 要素識別番号。 |
SS | CENTER_2D_SS | typedefセクションで定義されるデータ構造。 | |
DOMAIN_ID | integer | ドメイン識別子 | |
TRIA6* | EID | integer | 要素識別番号。 |
TERM | character | 位置 | |
SS | GRID_2D_SS | typedefセクションで定義されるデータ構造。 | |
DOMAIN_ID | integer | ドメイン識別子 |
* これらのデータセットは、ELEMENTAL/STRAINグループにも適用できます。
データセット名 | フィールド | タイプ | 説明 |
---|---|---|---|
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 | ドメイン識別子 | |
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: h5py、numpy
- C: hdf5およびhdf5_hlライブラリ
Pythonの例1:.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ファイル内の変位からの特定データの読み取り
# ******************************************************
# 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ファイルからの応力の読み取り
# ******************************************************
# 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:変位の読み取りと出力
# ******************************************************
# 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要素からの応力の読み取りと出力
# ******************************************************
# 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;
}