
モジュールレポート(6):tailed advector
IAC Public Domain Software Module
Contents
はじめに
今回紹介する tailed advector は、AVS/Expressで標準提供されているadvectorモジュールの機能を拡張したモジュールです。
advectorは、ベクトル・コンポーネントを持ったフィールドに質量の無いパーティクルを放出し、時間と共にどのように移動するかを表示します。同時に、パーティクルが移動する軌跡を流線で表示することができますが、パーティクルの現在位置以前の軌跡だけを表示する機能は提供されていません。
tailed advector にはこの機能が追加されているので、名前の通り、パーティクルに尾が生えたような表示を行うことができます。そのため、AVS5で標準提供されていたadvectorモジュールと同等の機能を持ったモジュールになります。
tailed advectorモジュールは、AVS/Express Vizで標準提供されていないモジュールを用いて作成されているので、Vizでは使用できません。Vizをお使い頂いている方には申し訳ございませんが、tailed advectorモジュールはAVS/Express Developerをお使い頂いている方を対象に紹介させて頂きます。ご了承下さい。
ダウンロード
IACモジュール用のAVS/ExpressプロジェクトをIACmodsと仮定します。
IACフリーソフトモジュールを初めてインストールされる方は、下記を参考に IACmodsプロジェクトを作成してください。
tailed advectorモジュールを以下のURLからダウンロードします。
tailed advectorについて、以下のように記述されています。
| Number | P0095 | Name | TailedAdvector | Version | 1.0 |
|---|---|---|---|---|---|
| Path | iac_proj/t_advect/ | ||||
動作環境については記載されていませんが、Sun(Solaris2.6),SGI(IRIX6.5:n32) にて動作を確認しました。
圧縮方法により三種類(tar+gz, tar+compress, zip)のダウンロード用ファイルが提供されているので、必要なファイルを IACmodsディレクトリ配下にダウンロードします。
ここでは、t_advect.tar.gz ファイルをダウンロードします。
ダウンロードしたファイルを展開します。
% gunzip -c t_advect.tar.gz | tar xvf -
iac_projディレクトリに wr_prディレクトリが生成され、以下のファイルが展開されます。
| INSTALL | Vファイルのインストール方法 |
|---|---|
| t_advect.v | IAC_PROJ.TailedAdvectorテンプレートライブラリ |
| tadvmods.v | TailedAdvectorを構成する部品モジュール |
| tadvmacs.v | マクロモジュール |
| tadvapps.v | サンプルアプリケーション |
| t_advect.c | ソースコード |
| fld_util.c | t_advect.cで用いるルーチンが書かれたソースコード |
| fld_util.h | t_advect.cで用いるルーチンに必要なヘッダーファイル |
| t_advect.html | TailedAdvectモジュールのドキュメント |
| t_dep_av.html | imeDependentAdvector、AltTimeDependentAdvectorモジュールのドキュメント |
| README | コンパイル方法および展開されたファイルの説明 |
| doc/report.doc | テクニカルレポート(Word文書) (注)オリジナルのプロジェクトの文書であり重要な部分が変更されています。 |
モジュール定義ファイルの設定
IACmods/iac_proj/iac_proj.v ファイルに以下の一行を追加します。
flibrary IAC_PROJ {
"../iac_proj/t_advect/t_advect.v" TailedAdvector;
};
IACmods/iac_lib/mappers.v ファイルに以下の三行を追加します。
flibrary MAPPERS {
IAC_PROJ.TailedAdvector.TailedAdvectorMacs.tailed_advector tailed_advector;
IAC_PROJ.TailedAdvector.TailedAdvectorMacs.TimeDependentAdvector TimeDependentAdvector;
IAC_PROJ.TailedAdvector.TailedAdvectorMacs.AltTimeDependentAdvector AltTimeDependentAdvector;
};
tailed advectorにはサンプルVファイルも提供されているので、IACmods/iac_lib/examples.vファイルに以下の行を追加します。
flibrary EXAMPLES {
IAC_PROJ.TailedAdvector.TailedAdvectorApps.SingleTailedAdvectorEg SingleTailedAdvectorEg;
IAC_PROJ.TailedAdvector.TailedAdvectorApps.DualTailedAdvectorEg DualTailedAdvectorEg;
IAC_PROJ.TailedAdvector.TailedAdvectorApps.TimeDependentAdvectorEg TimeDependentAdvectorEg;
};
コンパイル
tailed advectorをコンパイルします。
コンパイルを行う場合は、環境変数 XP_PATH と MACHINE が設定されていることを確認してください。プラットフォームがSGI(32bit版)の場合は、以下のように設定します。
% setenv XP_PATH <インストールディレクトリ>/express
% setenv MACHINE sgN32
(注)環境変数 MACHINE に設定する値は、インストールプロダクト名です。
$XP_PATH/bin/xp_machを実行すると得られます。
IACmodsディレクトリに移動し、以下のコマンドを実行します。
% $XP_PATH/bin/$MACHINE/base -project . -comp_proc express -exit
モジュールの実行
tailed advectorを実行する場合には、コンパイルした express を起動します。
IACmodsディレクトリに移動し、以下のコマンドを実行します。
% ./bin/$MACHINE/express -project . (for Developer user)
LibrariesメニューからIACを選択します。
mappersカテゴリにtailed advectorモジュールが登録されています。
tailed advectorモジュールをインスタンスするとコントロールパネルにパラメーターが表示されます。
tailed advectorのパラメーターはadvectorモジュールとほぼ同じため、ここでは追加されたパラメーターのみを紹介します。advectorモジュールに存のパラメーターについては、モジュールリファレンスを参照下さい。
| Tracer Length | 軌跡を表示させる長さです |
|---|---|
| Tracer Style | 軌跡の表示方法を選択スイッチです
|
| Time Step Interval | 設定した時間が経過するごとに、time_step_numberを1増加させます |
出力データには、新たに以下のポートが加えられています。
| out_tracer | 軌跡を示すメッシュデータを出力します |
|---|---|
| tracer_obj | out_tracerの表示オブジェクトです。 |
| time_step_number | time_step_intervalで設定した時間が経過するごとに1増加します。 時系列データによるパーティクル・トレースを行なう際に用います。 |
実際にモジュールを動作させてみましょう。
IACライブラリのExamplesカテゴリにサンプル・ネットワークが登録されているので、これを利用してモジュールの動作確認を行います。
すでにアプリケーションが起動されている場合は、[File]-[DeleteApplication]を選択して削除します。
IACライブラリに登録されている Examples.SingleTailedAdvectorEg を選択し、ワークスペースにインスタンスします。サンプルではパーティクルとして矢印(Arrow1)を用いているので、流線と区別しやすくするために球(Sphere)に変更します。ネットワークは図1のようになります。
tailed advectorのコントロールパネルで runボタンをオンにすると、パーティクルのアニメーションが表示されます。
評価
今回紹介したtailed advectorでは、パーティクルが移動してきた位置までの軌跡(流線)を表示することができます。そのため、パーティクルの現在位置および移動距離などがわかりやすく表示できます。
この機能は AVS5のadvectorには提供されていたので、AVS5からAVS/Expressに移行された方にとっては嬉しい機能の一つではないでしょうか。
さらに、tailed advectorは時系列データにも対応しているので、標準提供の advector よりも利用範囲が広がると思います。時系列データ対応のモジュールは、IAC.mappersカテゴリにTimeDependentAdvector、AltTimeDependentAdvectorという名前で登録されています。サンプル・ネットワークは IAC.Examples.TimeDependentAdvectorEg です。こちらも参考にしてください。
tailed advectorモジュールはadvectorモジュールに上記の機能を追加したものであり、advectorで提供されている機能のほとんどは継承していますが、以下の制限があります。
- advectorではベクトル場から生成された流線のノードの補間を行なうので、滑らかに動くアニメーションが表示されます。しかし、tailed advectorでは流線のノード補間を行なわないため、あまり滑らかな動きにはなりません。
- tailed advectorではパーティクルの放出は一回の実行につき一度しか行なうことができません。
また、はじめにも書きました通り、AVS/Express Vizで提供されていないモジュールを用いて作成されていますので、実行するためにはAVS/Express Developerが必要になります。
以上のようにtailed advectorでは大きな制限がありますので、当然追加された機能を使いたい場合以外にメリットはありません。しかし、追加された機能は面白いものですので使える環境があれば是非使ってみてください。
AVS Support Center, fns-avssup@cs.jp.fujitsu.com

