AVS Manual Ver. 0.3
ここでは,数値計算の可視化にとって必須とも言えるアイテム,AVSの使い方を,RAMSの結果出力を例にとってごく簡単に解説していきます.なるべく頻繁に更新して内容を増やして行くつもりです.また,できるだけブラウザはInternet Explorer 4.0以上をお使い下さい.
必見!Input Dataのフォーマット
この手の可視化ツールを使う際に一番頭を悩ませるInput Dataのフォーマットを解説します. ここではシグマ座標を用いた3次元データを可視化する場合を例にとって説明します.この場合,Data fileと座標ファイル(XYZ file)の二つのファイルを用意します.
・3次元データファイル
RAMSの結果出力の際には,U,V,W,cloud(雲水),relative humidity,topographyなどのデータを読み込ませます.ファイルの書式としては,一列にこれらのデータを並べて,k,j,iの順にループをかけます.つまり,上から順にまずiが増えて,jが増えて,最後にkが変わって,という順番ですね.さらに,fortranで書かせると仮定すると,各数値の頭に,必ず正負の符号が必要になります.プラスの値の時にプラスの符号を出力させるために,
      DO K=1,KMAX
       DO J=1,JMAX
        DO I=1,IMAX
         WRITE(10,100) (DATA(I,J,K,L),L=1,LMAX)
        END DO
       END DO
      END DO
 100  FORMAT(SP,6E13.5)
というように,書式指定にSPという記号を加えます.さらに,特にこだわりを持たない人は,E13.5まで真似ていただけると安心かも.また,上のプログラムはあくまでも例えです.記号や装置番号などは必要に応じて変えてください.
・3次元座標ファイル
上のデータファイルだけでは,各点の座標の位置情報が含まれていません.ここでは座標ファイルを別途用意する方式を紹介します.上のデータファイルに足してもいいのですが,多くの場合,座標ファイルは一度計算領域を決めるとあまり変更がないはずなので,座標ファイルを別途用意する方が楽になります.
ボクがやっているRAMSの計算の場合,水平方向は等間隔,鉛直方向のみ不等間隔シグマ座標なので,ちょっと特殊な書き方になります.鉛直方向のスケールにあわせて水平方向を適当に決めて下さい.ループのかけ方はデータファイルと同じ,k,j,iの順です.
      DO K=1,KMAX
       DO J=1,JMAX
        DO I=1,IMAX
         WRITE(20,200) real(I)*1000.,real(J)*1000.,Z(I,J,K)
        END DO
       END DO
      END DO
 200  FORMAT(SP,3E13.5)
水平方向は等間隔に書けばいいので,素直にi,jの値を書くだけで構いません.zのみ,各点の高さ情報を入れていきます.フォーマットはData fileと同じく,正負の符号を必ず付けます.
・2次元等間隔データ
2次元等間隔の場合は,座標ファイルは必要ありません.Data fileは可視化させたい並びの通りに書き込みます(説明がむずい).下を見ていただけるとわかると思います.スパイグラスと同じといってもいいでしょうか.
      DO J=1,110
       WRITE(10,100) (DATA(I,J),I=1,50)
      END DO
 100  FORMAT(SP,50E13.5)
この手の書式の場合,書式の中にIMAXなどの変数を持ち込めないため,泣く泣く数字を直接入れました.実際のプログラムでは,ループの部分にはIMAXを書いて,書式の部分には確実にIMAXを超える自然数を書き込んでおけばIMAXだけ横方向に書いた後で改行されます.このループさえ間違えなければ,後で読み込ませる書式をAVSに伝えるときにIMAX,JMAXを打ち込めば大丈夫です.
・2次元不等間隔データ
最後に2次元不等間隔データについてです.この場合はデータファイルと座標ファイルが必要になることはおわかりいただけるでしょう.XYZ fileでたとえばXとZの値だけを動かせば大丈夫と思ったんですが,なぜかY=1だけだと可視化できません.そこで,ダミーデータも読み込ませる必要があります.
仮にXZ平面のデータを使うとすると,Y=1と2の2層にして,3次元データに化けさせる必要があります.Y=2のダミーの層にはどんなデータを入れてもいいのですが(後で見なければいい),Y=1と同じ値を入れるのがプログラム上楽だと思います.あと,3次元データとして読み込ませると流速ベクトルも3次元でなければ可視化してくれません.V=0をすべての点に入れてしまいましょう.
二つのファイルの書式は3次元データの時と同じです.上を見てください.

1章.起動など
1−1.PCでのINDY-Oの起動
PC上でAVSを起動するためには,eXodusというアプリケーションが必要となります.これは,ログインしたXwindowシステムのディスプレイを自分のPCのディスプレイに設定することができる切れ者ソフトです.
XDM(X Display Manager)ログインでindy-o(131.1112.3.4)にログインします.うまくいけば「こんなウィンドウ1」が現れるはずです.
ログイン名とパスワードが認証されると,xtermが1つ立ち上がります.フォントが小さくてちょっと苦しいときには,
 xterm -fn r16 &
と打ち込んで,フォントの大きなxtermを立ち上げましょう.でも,xterm上に打つコマンドはほとんど皆無に等しいので,我慢する方がお利口かも.

1−2.AVSの起動
さて,実際にAVSを起動するコマンドは,
 avs -nohw -gamma 2
と打ち込みます.-nohwはおまじないだと思って下さい.-gammaオプションは画面の明るさ調節です.2〜3程度が適当かと思われます.
立ち上げに成功すると,「こんなウィンドウ2」が登場します.

1−3.Network Editorの起動
「こんなウィンドウ2」に出ている,Network Editorをクリックして立ち上げます.最初に立ち上げるものはまずこのNetwork Editorに限られると思います.
Nerwork Editorを立ち上げると「こんなウィンドウ3」(下半分ほど省略)が登場します.

1−4.「モジュール」とマウスの操作(かなりくどい)
 Network Editor上で重要な「モジュール」というものとマウス操作について簡単に説明します.
・モジュールとは?
 AVSは立ち上げた段階では,windowsアプリケーションのようなメニューバーはありません.モジュールというものを組み合わせて可視化アプリケーションを組み立てるようなものです.モジュールはFortranでいうサブルーチン,Cで言う関数のようなもので,たとえばfileをopenするモジュール,画像を出力するモジュールなど,様々なものがあります.組み立て方はあっけないくらい簡単で,モジュールをリストからドラッグ&ドロップで引っ張ってきて,端子のような部分を線で結ぶだけです.データは勝手に次のモジュールへと引き渡されていきます.

 で,モジュールをいじるときのマウス操作についてもごく簡単に触れておきます.Network Editorを立ち上げたときに,右側の大きなウィンドの,右上部分にData Input,Filters,Mappers,Data Outputという4列のモジュールリストがでてきます.このリストからお目当てのモジュールを見つけたら下半分の広いスペースにドラッグ&ドロップで持って来るわけですが,ある程度お目当てのモジュールの名前を知っている方が探しやすいです.
 たとえば,Data Outputの列にはwrite imageというモジュールがありまして,Data Outputの枠の上でマウスのボタンを押せばリストが上下しますが,下の方にあるモジュールに行き着くまでは大変!そこで,Data Outputの枠の上で,writeと打ち込めば,検索してくれます.こんな感じで名前を指定する方が便利です.
 あと,モジュール同士の接続ですが,三つボタンマウスの場合は,端子のような色の付いているところで真ん中ボタンを押すと,接続可能な線が表示され,ボタンを押したまんまで自分がつなぎたい線のほうにマウスを動かすと,線が白色になってそこでボタンを離せば繋がります.つなげた線を切りたいときは,右ボタンで同様の操作を行います.さらに二つボタンの時は,eXodusが三ボタンもどきに設定してくれていて,左右のボタンを同時に押すと,真ん中ボタンの役割を果たしてくれます.

1−5.AVSの終了とログアウト(実は重要?)
 ネットワークエディタを使った後は,Clear Networkを押してネットワークを消し,右側でっかいウィンドウをCloseボタンを押して閉じます.さらに左側ウィンドウでExitを押し,次にでてくるウィンドウでExit AVSを押してやっとAVSの終了です.
 indy-oのログアウトは,画面左上の小さなメニューからDesktop→Log Outを押し,Do you want to log out now?にYesを押してやっと脱出です.ちゃんと接続を切りましょう.


2章.Field Data作成
2−1.Field Dataの作成のながれ
・ネットワークの読み込みor作成
Field Data作成用のネットワークを読み込むか,もしくは新規に作成します.詳細は2−2を参照のこと.
・form data file の選択or作成
左の縦長ウィンドウの,read formを押して,Select Data Fileのボックスからパスに注意しながらform data fileを選択します.
また,データファイルと座標ファイルを用意したときにはNumber of Data Filesに"2"を入れます.
form dataがないときにはこれを作成します.この作成については下の特別講座を参照のこと.
・XYZ file の選択
左の縦長ウィンドウの下にある,Browser for file 1を押して,Select Data Fileのボックスからパスに注意しながらXYZ fileを選択します.
・DATA file の選択
左の縦長ウィンドウの下にある,Browser for file 2を押して,Select Data Fileのボックスからパスに注意しながらDATA fileを選択します.
・Network への送信
左の縦長ウィンドウにある,send dataを押して,データをfile descriptorに送ります.この時点でデータ変換が始まります.右の特大ウィンドウのfile descriptorモジュールがactiveになると色が変わります.この間はデータ変換中です.
・field fileへの書き込み
左の縦長ウィンドウのTop Level Stackでモジュールをwrite filedに切り替えて,出力ファイルのファイル名を指定します.データ変換の途中で指定して構いません.混乱を避けるため,DATA fileを指定してしまうのがよいでしょう.拡張子.fldが勝手に付きます.左の縦長ウィンドウの上にある,Status欄が変化しなくなったら,もしくは右の特大ウィンドウのモジュールの色がデータ送信前に戻ったらすべて完了です.

2−2.Field Data作成用Networkの作成,保存
 既にField Dataを作成するネットワークを作ってある場合には「こんなウィンドウ3」にあるRead Networkをクリックして,既成のネットワークファイルを選択します.
 はじめてField Dataを作成する場合は,右側の大きなウィンドウの上側からモジュールと呼ばれるものを集めてネットワークを作る必要があります.マウス操作については別途説明します.
 上に並んでいるたくさんのモジュールの中から,
・file descriptor(Data Inputの列にある)

・write field(Data Outputの列にある)

という二つのモジュールをドラッグ&ドロップで下のスペースに持ってきます.さらに,file descriptorからwrite fieldへと線を結べば,field data作成用のネットワークの出来上がりです.
 Write Networkによりこのネットワークを保存することができます.たった二つのモジュールだけでも頻繁に使うので保存しておきましょう.特に拡張子はつきません.*.netとでもお好きな拡張子でどうぞ.

2−3.Field Dataの作成ネットワークの説明
 ここで,この2つのモジュールしかないネットワークの役割について説明すると,風速や温位などのデータファイルと,シグマ座標のためのXYZファイルの二つのファイルをインプットして,AVSフォーマットとなった1つのバイナリファイルをアウトプットします.AVSフォーマットに変換するのがfile descriptorというモジュール,変換されたデータをファイルに出力するのがwrite filedというモジュールです.
 Field Data作成用のネットワークを読み込んだ,もしくは作成した場合には「こんなウィンドウ4」のような画面になり(足りないときは背後に隠れてる),3つのウィンドウが存在していることをまず見分けて下さい.左側の縦長のウィンドウに,Top Level Stackというボックスがあり,そこに開いたネットワークのモジュールがすべて登場します.この場合は二つだけです.
 file descriptorモジュールを読み込むと,AVS Field Data Interchange Formというタイトルのウィンドウが立ち上がります.画面中央当たりに出ているウィンドウです.ここには,先程述べた二つのインプットファイルの情報(form dataとします)を入力します.配列はいくつだとか,データ要素は何種類有るかとか,何次元のデータだとか,そういった情報です.ただ,毎回打ち込むのは面倒なので,このform dataを別のテキストファイルに保存して,使うたびに読み込ませることができます.それによって,ある程度作業量の負担が減ります.実際にはform dataを読み込ませることがほとんどです.form dataを読み込ませ,フィールドデータを作成するまでの流れを以下に示します.

特別講座 AVS Field Data Interchange Formの書き方!
ここではField DATA作成での最難関,AVS Field Data Interchange Formの書き方を解説します.form data がない場合は,自分で直接打ち込んでいくことになります.
まずはじめに,画面左側の縦長ウィンドの中の,Number of Data Filesに2を入れてくださいっ!これは,読み込むファイルの数で,Data fileと座標ファイル(XYZ)の二つを読むという意味です.
・Dimension of Compute Space
計算領域の次元数です.たいてい2次元か3次元ですね.
・Dimension of Physical Space
上のCompute Space と何が違うのかは謎です.同じ値をいれておきましょう.
・Vector Length
データファイルの列数をいれます.
・Data Type
データファイルの中のデータタイプ(としか言いようがない)です.byte,integer,short,float,doubleがあって,いつもfloat型を使っています.
・Uniform
座標系の情報です.Uniform,lectilinear,irregularがあり,シグマ座標系ならirregularです.lectilinearは不等間隔だけど直交している座標系の時.
・Labels(Optional)
文字通りオプション機能なので,わざわざつけなくてもオッケーですが,やはり何となく書いておきましょう.Data fileの各列のラベルです.たとえば,U,V,W,Temp,みたいに.
・Units(Optional)
上と同様オプション機能.これになるとさらに付けなくてもいいかも.単位がわかっているなら書いておきましょう
・Dimension
はじめの二つで書いた次元数だけ,配列の大きさを入れます.3次元なら,Dimension 1〜3まで忘れずに.
・Data
ぱっと見ややこしいですね.がんばって入れていきましょう.まず右上から順に,File Based Specification,ASCIIでfloatを選択.で,infile1とかinfile2とかってのは,上に赤で注意書きで書いたNumber of Data Filesと関係があり,今指定しているファイル情報は,もし二つ(DataとXYZ)を読み込むとすればそのうちのどっちがDataなのか,ということを指定するものです.infile1を指定すれば,Data fileを選択するときはあとでBrowse for File 1を押したときに選択することになります.そのときは,XYZファイルを選択するときは,Browser for File 2を押して選択します.
そのつぎは,line # and word #にしてください.で,その下のLine#は,Data fileの何行目から実際に読み込ませたいデータが始まるかって言う意味で,ふつう1が入る.word#はそれぞれのscalar_value(そのウィンドの左下で選択する!)が,各行の何列目に入っているのかって言うこと.ふつう,scalar_value 1なら1,scalar_value 2なら2が入る.Comment Characterは無視して,strideは今選択しているscalar_valueの値が,はじめにline行のword列を読みにいくわけだけど,次はいくつ先を読み込ませればいいのかという数.ふつうVector Lengthと同じ数が入る.
・Points
これは上のDataの座標ファイルバージョンです.coordinate 1,2,3(3次元なら)に対して同様の指定をすればよい.
・Variables
謎.全くいじらない.ひたすら無視.

2−4.ネットワークのクリア
変換作業が済んだら,右の特大ウィンドウにあるclear networkを押してネットワークをクリアします.