富士通長野システムエンジニアリング

  1. ホーム >
  2. 製品 & サービス >
  3. [研究開発] >
  4. AVS >
  5. モジュールレポート - tailed advector
トップ 製品概要 事例 ソリューション サポート & トレーニング 体験版CD-ROM 動作環境 価格 技術情報/FAQ お問い合わせ お見積もり ダウンロード リンク集

モジュールレポート(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 軌跡の表示方法を選択スイッチです
  • cap      パーティクルの初期位置からtracer_lenだけ軌跡を表示します 
  • cycle    パーティクルの現在位置までtracer_len前からの軌跡を表示します 
  • add      パーティクルの初期位置から現在位置までの軌跡を表示します
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のようになります。

図1 ネットワーク例

拡大イメージ

tailed advectorのコントロールパネルで runボタンをオンにすると、パーティクルのアニメーションが表示されます。

図2 表示例

拡大イメージ

評価

今回紹介したtailed advectorでは、パーティクルが移動してきた位置までの軌跡(流線)を表示することができます。そのため、パーティクルの現在位置および移動距離などがわかりやすく表示できます。

この機能は AVS5のadvectorには提供されていたので、AVS5からAVS/Expressに移行された方にとっては嬉しい機能の一つではないでしょうか。

さらに、tailed advectorは時系列データにも対応しているので、標準提供の advector よりも利用範囲が広がると思います。時系列データ対応のモジュールは、IAC.mappersカテゴリにTimeDependentAdvector、AltTimeDependentAdvectorという名前で登録されています。サンプル・ネットワークは IAC.Examples.TimeDependentAdvectorEg です。こちらも参考にしてください。

tailed advectorモジュールはadvectorモジュールに上記の機能を追加したものであり、advectorで提供されている機能のほとんどは継承していますが、以下の制限があります。

  1. advectorではベクトル場から生成された流線のノードの補間を行なうので、滑らかに動くアニメーションが表示されます。しかし、tailed advectorでは流線のノード補間を行なわないため、あまり滑らかな動きにはなりません。
  2. tailed advectorではパーティクルの放出は一回の実行につき一度しか行なうことができません。

また、はじめにも書きました通り、AVS/Express Vizで提供されていないモジュールを用いて作成されていますので、実行するためにはAVS/Express Developerが必要になります。

以上のようにtailed advectorでは大きな制限がありますので、当然追加された機能を使いたい場合以外にメリットはありません。しかし、追加された機能は面白いものですので使える環境があれば是非使ってみてください。


AVS Support Center, fns-avssup@cs.jp.fujitsu.com