solver.exe による計算が終了し、unite.exe による各PEのデータの
結合処理が終ったら、次にその計算結果を読みだして処理しなければならない。
CReSS の出力データは、指定にもよるが、多くの場合バイナリ形式を選ぶことになるし、
各出力時刻のさまざまなデータを並べたものになっているので、同様のフォーマットの
データの処理が得意な GraDS ででもなければいきなり図を描く事は難しい。
また、望む出力を得るためにはデータを読んで加工する必要もでてくる。
そこで、バイナリ形式で、計算している座標系 (dmpcmp=1) での出力ファイルを
極力汎用性を重んじて切り出す処理を行なうソフトを作成した。
readcress200609.c である。
U = Ubase + U , V = Vbase + V と処理していたが、間違っていた
ような気がする、
素直に U = U, V = V とするバージョンを作成した
readcress200802.c (2008 Feb.)
CReSS の出力結果から、さまざまな指定をした切り出しが可能である。
使い方は、まず計算時の LOG を見て、何が出力されているのかを確認し
その記述ファイルを Descrition.txt のように作成する。
書き方は、# から始まる行がコメントで無視されることを踏まえて、実際に読んでもらえれば分かると思うが、
最初にモデルの設定情報を書き、その後に、出力変数を出力される順に
「2次元データなのか、3次元データなのか、」
「そのデータを何と呼ぶか」
「データに関するコメント」
の順で書き並べるだけである。サンプルは、雲の計算を行なった状態での全ての出力である。
この記述は、geography のファイルと dmp ファイルと両方について行なう。
コンパイルは簡単で、ただ
cc readcress200802.c -o readcress200802とするだけである (作成は FreeBSD 6.1 上で行なった)。
**** ERROR MESSAGE ****
Program for reading CReSS data
USAGE:
for 3d valiables
./readcress dmpdata geodata descdata 3 x xnum item
./readcress dmpdata geodata descdata 3 xy xnum ynum item
./readcress dmpdata geodata descdata 3 xyz xnum ynum znum item
for 2d valiables
./readcress dmpdata geodata descdata 2 item
./readcress dmpdata geodata descdata 2 x xnum item
x canbe y or z, also y , z
xnum ... : from 2 to xdim-2
item: in itemlist
3次元変数、2次元変数のどちらに対しても、指定した格子番号での、
(例1)
./readcress ../CReSS2.1m/takayama2006a.dmp000450.united.bin ../CReSS2.1m/takayama2006a.geography.united.bin Descrition.txt 3 z 2 U > outfileとすると、
awk '{print $1, $2, $4}' < outfile > xyU
とすると、xyU に、経度 緯度 U の形で並んだデータセットができるので、
(例2)
./readcress ../CReSS2.1m/takayama2006a.dmp000450.united.bin ../CReSS2.1m/takayama2006a.geography.united.bin Descrition.txt 3 xy 10 10 PT > outfileとすると、格子番号で x=10 y=10 の場所での温位の鉛直分布が得られる。
awk '{print $3, $4}' < outfile > zPT
で zPT に、高度 温位 のデータが得られるので、xgraph や gnuplot あるいは psxy などで図化できる。rm outfile foreach t (../CReSS2.1m/takayama2006a.dmp*united.bin) set s=`echo $t:t | sed 's/takayama2006a.dmp//' | sed 's/.united.bin//'` printf "%s " $s >> outfile ./readcress $t ../CReSS2.1m/takayama2006a.geography.united.bin Descrition.txt 3 xyz 10 10 2 P >> outfile end時刻の情報はヒストリデータ(dmpファイル)のファイル名にあるので、
set title "time sequnce of pressure" set xlabel "time (sec)" set ylabel "Pressure (hPa)" plot "outfile" using 1:($4/100) notitle wi liなどとして、画面上で図を整えた後、
set term post eps color "Helvetica" 18 set output "output.eps" replot save "outfile.gnuplot"として、出力形式、ファイルを指定し、描画した後、gnuplot のスクリプトを 保存しておくと良い。
#!/bin/tcsh
set PROG = readcress200802
set DATADIR = '../CReSS2.2m'
set GEO = takayama2007a.geography.united.bin
set DMP = takayama2007a.dmp031800.united.bin
set DESC = Descrition.txt
set OUT = UDIRout
set DMP = takayama2007a.dmp031800.united.bin
./$PROG $DATADIR/$DMP $DATADIR/$GEO $DESC 3 z 2 U > Uout
./$PROG $DATADIR/$DMP $DATADIR/$GEO $DESC 3 z 2 V > Vout
cat -n Uout | sort -b > Uout1
cat -n Vout | sort -b > Vout1
join Uout1 Vout1 | sort -n > UVout1
# awk '{print $2, $3, $5, $9}' < UVout1 > UVout2
awk '{print $2, $3,(180.0/3.1415926535) *atan2($9, $5), sqrt($5*$5+$9*$9)}' < UVout1 > $OUT
# head Uout1 Vout1 UVout1 UVout2 UDIRout
rm Uout Vout Uout1 Vout1 UVout1
#!/bin/tcsh
set PROG = readcress200802
set DATADIR = '../CReSS2.2m'
set GEO = takayama2007a.geography.united.bin
set DMP = takayama2007a.dmp031800.united.bin
set DESC = Descrition.txt
set OUT = Tsurface
set POUT = P15out
set PTOUT = Pt15out
set PPTOUT = PPtOUT
set DMP = takayama2007a.dmp031800.united.bin
./$PROG $DATADIR/$DMP $DATADIR/$GEO $DESC 2 P15 > $POUT
./$PROG $DATADIR/$DMP $DATADIR/$GEO $DESC 2 Pt15 > $PTOUT
cat -n $POUT | sort -b > ${POUT}.1
cat -n $PTOUT | sort -b > ${PTOUT}.1
join ${POUT}.1 ${PTOUT}.1 | sort -n > $PPTOUT
awk '{T=$9 / ((100000.0/$5)**(287.05/1005.0)) ; print $2, $3, (T-273.15)}' < $PPTOUT > $OUT
# head $POUT $PTOUT ${POUT}.1 ${PTOUT}.1 $PPTOUT
rm $POUT $PTOUT ${POUT}.1 ${PTOUT}.1 $PPTOUT
これも、コンパイルは簡単で、ただ cc -o Horizontal_Cross Horizontal_Cross.c とするだけである。
使い方は、やはり同様に、何もオプションを付けずに起動すると下のように出て来る。
./Horizontal_Cross item number unit descritionfile dmpfile geofile
item: shuld be 3d variables in dmpfile
number: height or pressure
unit: m or hPa
item の指定は、上の readcress200802 と同じであるが、dmpfile にある3次元データしか指定できない。
cc -o CReSStoCReSS2 CReSStoCReSS2.c実行方法は、ただ ./CReSStoCReSS2 とするとメッセージにでるように
./CReSStoCReSS2 ヒストリファイル名 出力ファイル名 descritionfileである。descritionfile は、上記の読み込みソフトと同じものでよい。
これを、CReSS に与えるには、ヒストリファイル作成時に CReSS の設定ファイルで
指定していた xdim ydim zdim から 3 引いた値を、次の CReSS に与える GPV データの
格子数として指定する必要があります。もちろん、地図の座標系などもヒストリファイル作成時
の設定を、次のGPVデータの設定として与える必要がありますし、温位、混合比でデータが与えられている
という設定 (pm) に変更する必要もあります。(2006.10 玉川)