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 itemlist3次元変数、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 hPaitem の指定は、上の readcress200802 と同じであるが、dmpfile にある3次元データしか指定できない。
cc -o CReSStoCReSS2 CReSStoCReSS2.c実行方法は、ただ ./CReSStoCReSS2 とするとメッセージにでるように
./CReSStoCReSS2 ヒストリファイル名 出力ファイル名 descritionfileである。descritionfile は、上記の読み込みソフトと同じものでよい。
これを、CReSS に与えるには、ヒストリファイル作成時に CReSS の設定ファイルで
指定していた xdim ydim zdim から 3 引いた値を、次の CReSS に与える GPV データの
格子数として指定する必要があります。もちろん、地図の座標系などもヒストリファイル作成時
の設定を、次のGPVデータの設定として与える必要がありますし、温位、混合比でデータが与えられている
という設定 (pm) に変更する必要もあります。(2006.10 玉川)