6. データ
データ型の値は、データの次元や座標値、
物理量などをあらわすいくつかの整数、実数、
配列などが集まってできています。
これらの値(「要素」あるいは「メンバー」などと呼びます)
は '.'(ピリオド)を使って参照することができます。
たとえば、
なお、pointer では座標を x、y... ではなく x1、x2... で
あらわすことがあります。
これは場合によって x1、x2... が円柱座標の r、phi... をあらわすため、
そしてグラフの x 軸、y 軸と混同しないためです。
sequential データは、
データの個数分だけの座標値と物理量を持つデータです。
たとえば 100 個のデータがあった時、
100 個分の x1 座標、(二次元以上なら)x2 座標、x3 座標、
それに(あれば)物理量が必要となるわけです。
実際には x-y の簡単なグラフを書かせる時や、
空間上の流線や磁力線などを書かせたい時に使うデータの種類です。
grid データは、
空間を格子上に切ってその格子上の各点の物理量を持つデータです。
たとえば二次元空間で x1 方向に 20、
x2 方向に 30 の格子を切ったとすれば、
必要な座標値は x1 が 20、x2 が 30、
物理量は 20x30 だけ必要になります。
この種類のデータは等高線図を作る時などに使います。
$dt=data;
$dt.dtype="seq";
$dt.dim=1;
$dt.nx1=10;
$dt.nv=1;
for($i=0; $i<$dt.nx1; $i++){
$x=0.1*$i;
$dt.x1[$i]=$x;
$dt.v[0][$i]=$x*$x;
}
これを実行すると変数 $dt に v=x^2 をあらわすデータが代入されます。
このあとたとえば
newwin;
scale;
draw $dt;
lim $dt;
とすればデータをグラフとして見られるはずです。
ケース2
grid データも sequential データと
同じような手順で作ることができます。
ただし、配列の長さが grid データと違うので注意して下さい。
次の例は二次元の grid データです。
$dt=data;
$dt.dtype="grid";
$dt.dim=2;
$dt.nx1=10;
$dt.nx2=10;
$dt.nv=1;
for($i=0; $i<$dt.nx1; $i++) $dt.x1[$i]=0.1*$i;
for($j=0; $j<$dt.nx2; $j++) $dt.x2[$j]=0.1*$j;
for($j=0; $j<$dt.nx2; $j++){
for($i=0; $i<$dt.nx1; $i++){
$x=$dt.x1[$i];
$y=$dt.x2[$j];
$dt.v[0][$j*$dt.nx1+$i]=\
0.5+0.5*sin(2.0*3.14*$x)*cos(2.0*3.14*$y);
}
}
v[0] が nx1*nx2 の長さを持った
一次元の配列であることに注意して下さい。
newwin;
scale;
axis x1 x2;
contour $dt;
としてみてください。
dim(整数型)
データの次元数をあらわす。
一次元から三次元まで。
dtype(文字列型)
データの種類。
今のところ "sequential(seq)" と "grid" の二種類がある。
nx1(整数型)
x1 座標が何点あるか。
nx2(整数型)
x2 座標が何点あるか。
データが二次元以上の時必要。
また、データが sequential の場合は nx1 と同じになる。
nx1(整数型)
x1 座標が何点あるか。
データが三次元の時必要。
また、データが sequential の場合は nx1 と同じになる。
x1(実数配列型)
x1 座標の座標値。
nx1 個の実数配列になる。
x2(実数配列型)
x2 座標の座標値。
nx2 個の実数配列になる。
データが二次元以上の時必要。
x3(実数配列型)
x3 座標の座標値。
nx3 個の実数配列になる。
データが三次元の時必要。
nv(整数型)
各点の物理量のデータが何種類あるか。
たとえば、各点に温度と圧力の値があれば nv=2。
あるいは各点に三次元のベクトル量が与えられていれば nv=3。
またデータが座標値のみしか持たなければ nv=0。
v(実数配列のリスト型)
各点の物理量データ。
v そのものは nv 個のリストで、
リストの各要素(v[0]、v[1]...)がデータを示す実数配列。
配列は、sequential データなら nx1 個、
grid データなら一次元の場合 nx1 個、
二次元の場合 nx1*nx2 個、
三次元の場合 nx1*nx2*nx3 個の実数配列になる。
grid データの場合、
x1 座標が $i 番目、x2 座標が $j 番目、x3 座標が $k 番目のデータは
v[0]... 配列の $k*nx1*nx2 + $j*nx1 + $i 番目の要素になる。