バイナリーデータの作成

データ部分は、バイナリーデータになります。CFortranVBAなどのプログラム言語からデータを作成する必要があります。ここでの例のように1レイヤー、1変数の場合、図に示した順番で、float型のデータをバイナリーで羅列することで作成することが出来ます。

以下には、サンプルとして上述のコントロールファイル例に対応するデータをC++言語 の出力ストリームで書き出すプログラムコードを示します。

 

まず、データは3次元のfloat型の配列で既に作成されているとします(Data[ ][ ][ ])。下図のように時刻t番目、X座標i番目、Y座標j番目のデータには、Data[t][i][j]でアクセスできるものとします。

GrADSのバイナリーファイルは、一つの時刻について一番下の行から順に上の行の値をfloatのバイナリデータで書き出し、間に何も挟まずに次の時刻のデータを同じように書き出すことで作成されます。左上端から(一番上の行から)書き出す必要がある場合には、コントロールファイルに“OPTIONS  yrev”の行を追加して下さい。

 

<サンプルコード>

/* Data[t][x][y]で既に時系列のグリッドデータが格納されているとする。*/

 

//上記のコントロールファイルの例に合わせたデータ

const int Xnum = 20;

const int Ynum = 10;

const int Tnum = 5

 

int t, i, j;

float Data[Tnum][Xnum][Ynum];

 

//Data[ ][ ][ ]に値を格納する(省略)

 

for(t = 0; t < Tnum; t++)

   for(j = 0; j < Ynum; j++)

        for(i = 0; i < Xnum; i++)

            cout.write((char*)&(Data[t][i][j]), sizeof(float));

 

GrADSのバイナリデータの書き出し順の説明