Yamamoto's Laboratory
 
 
入力
 
電磁場取り込み
 
User elemetns
 
GDF ファイル
 
Python
 
 
 
 
 
 
 
 
研究内容 加速器 GPT Python: GDF ファイル

GPTGDF ファイルGPT の GDF ファイルのデータ構造

GPT 出力ファイルである GDF はバイナリーデータです.このバイナリーデータの構造を示します.

目次


GDF ファイルとは

はじめに

GDF ファイルは,General Particle Tracer (GPT) の入出力ファイルです.電磁場やビームの状態,解析結果などの情報を保管するために使われます.これはバイナリーファイルのため,ユーザーがファイルに含まれる情報にアクセスする場合は,通常はコマンド: gdf2asci を使いテキストファイルに変換します.一度,テキストファイルに変換が問題です.計算結果の大きな GDF ファイルなどを処理する場合,このテキストファイルへの変換のオーバーヘッドが半端ではないです.本ページでは,直接 GDF ファイルにアクセスするために必要な情報を提供します.

私は GPT を使い始めてから,20 年以上を経過しましたが,長年,この GDF ファイルのバイナリーのフォーマットについて書かれたドキュメントを探していました.ある時,インターネットで GDF ファイルについて検索すると「EasyGDF」を見つることができました.これは Python コードで,直接 バイナリーの GDF ファイルを処理します.このコードを解析することで,GDF ファイルのフォーマットを知ることができます.本ページは,このコードを解析した結果です.Python を使って,GDF ファイルを処理する場合は,この EasyGDF を使うことを強く推奨します.Python 以外のプログラミング言語で GDF ファイルを取り扱う場合,本ページが役に立ちます.

GDF ファイル構造

GDF ファイルはヘッダー部とデータ部から,構成されます.

ヘッダー部には,GDFファイルのデータに関わる情報が記載されています.ヘッダー部は48バイトあり,その内容は以下のとおりです.最初の4バイトはマジックナンバーで,GDF ファイルの確認に使うことができます.この表を見れば,その他のバイト列の内容は理解できるでしょう.

GDF ファイルのヘッダー部.# の順番に従い,情報が記載されています.
# バイト数 データの型 意味
1 4 整数 マジック数: 94325877
2 4 整数 時刻 (Unix 時間)
3 16 文字列 データの作成ソフトウェアー.NULL (\0) がデータの終端.
4 16 文字列 行き先 (?? 筆者は理解できない).NULL (\0) がデータの終端.
5 1 符号なし整数 gdf のバージョン (ver xx.yy) の xx の部分.
6 1 符号なし整数 gdf のバージョン (ver xx.yy) の yy の部分.
7 1 符号なし整数 gdf 作成ソフトウェアーのバージョン (ver xx.yy) の xx の部分.
8 1 符号なし整数 gdf 作成ソフトウェアーのバージョン (ver xx.yy) の yy の部分.
9 1 符号なし整数 行き先のバージョン (ver xx.yy) の xx の部分.
10 1 符号なし整数 行き先のバージョン (ver xx.yy) の yy の部分.
11 2 ダミー

データブロック部

ブロックヘッダー

ヘッダー部の後に,データの情報が記載されています.データは複数のブロックから構成されます.ブロックの最初は 18 バイトのヘッダーがあります.このブロックヘッダー 18 バイトが表す情報は,以下の表のとおりです.

GDF ファイルのヘッダー部.# の順番に従い,情報が記載されています.
# バイト数 データの型 意味
1 16 文字列 ブロックの名前
2 4 整数 ブロックタイプのフラグ
2 4 整数 ブロックのサイズ

データ

ブロックデータ部のヘッダーの後に,数値データが書かれます.このデータは「単一」と「配列」に分けられます.これらは,ブロックタイプフラグで見分けることができます.具体的には以下の表の通りです.

GDF ファイルのヘッダー部.# の順番に従い,情報が記載されています.
データタイプ 4ビット 8ビット

ページ作成情報

参考資料

  1. easypdf のホームページここに掲載されている Python コードを解析し,本ページを作成しました.

更新履歴

2022年08月02日 ページの新規作成


no counter