OpenSim 開発者フォーラム

風の場 (Yan Lauria )

 
Picture of Admin 管理ユーザ
風の場 (Yan Lauria )
by Admin 管理ユーザ - Thursday, 29 January 2015, 7:51 PM
 

これは,データベースの不具合により失われた投稿の代理投稿です.

 [添付画像は復元できませんでした]


 Yan Lauria の投稿

Isekiさま

風の場をアビスに実装していただき、本当にありがとうございました。SLを超える科学コンテンツになりうると思います。これから見せ方を工夫したいと思います。

とりあえずアビスのVerregion(512mx512m)の高度300mに、パーティクル数が8000以内に収まるように、20m間隔でパーティクル発生器(2秒ごと、寿命20秒)をスクリプト削除で並べました。

操作方法メモ:コントローラ(https://jog/region/Abyss%20Observatory/261/213/109 に仮置き。オブジェクト名”SFSW Controller”)の近くでローカルチャットに以下を入力する

/6000 strength 実数:外力の強さを指定する.デフォルトは 1.0。
 OpenSim.ini の [Wind] セクションの strength 変数でも初期値を指定可能。1.0 ではちょっと弱いかも.

 例)/6000 strength 3

/6000 damping 実数:外力の減衰率を指定する.デフォルトは 0.85
 OpenSim.ini の [Wind] セクションの damping 変数でも初期値を指定可能。1単位時間毎に外力にこの値が乗算される.
 1.0以上に設定しても,強制的に 1.0 になる.

 例) /6000 damping 0.85

/6000 force 整数:外力の種類を表す.
 このコマンドを入力すると,現在の風のデータはリセットされずに、前の状態に対して外力を加えている.

 0 -- 各点にランダムに -1.0 ~ 1 の外力を加える.
 1 -- 北西のコーナから風が吹き込む (Jos Stam のコードより)
 2 -- 中心で渦を発生させる (Jos Stam のコードより)

 例)/6000 force 1

/6000 region 整数:リージョンのサイズを指定する.
 最新のモジュールのバージョンではリージョンのサイズは自動取得である.
 もしサイズを自動取得できなかった場合には,このコマンドを使用する.

 例) /6000 region 512

/6000 reset:風のデータを 0クリアしたい場合

Picture of Admin 管理ユーザ
Re: 風の場 (Yan Lauria )
by Admin 管理ユーザ - Thursday, 29 January 2015, 7:52 PM
 

これは,データベースの不具合により失われた投稿の代理投稿です.


 Yan Lauria の投稿

覚書メモ

Jos StanのFluid Solver(C言語コードコード)として以下のものを使用。

http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB0QFjAA&url=http%3A%2F%2Fwww.nealen.net%2Fprojects%2Falgoanim%2Fflowanim.cpp&ei=0xPBVP_PAqiymAXs5YLgDA&usg=AFQjCNHOKNY0laKUCFePU18aedUJ7QX23w&sig2=9n7S-wIPi_F20PwaV6bF6A

計算格子間隔は16mx16m

境界条件は点対称、すなわち、一方の境界から出ていく流れは、180度反対側の境界から入ってくる。

非圧縮流体の連続条件(容積不変)を満たすために高速フーリエ変換として、最近のFFTW3に書き換え。

Picture of Admin 管理ユーザ
Re: 風の場 (Yan Lauria )
by Admin 管理ユーザ - Thursday, 29 January 2015, 7:54 PM
 

これは,データベースの不具合により失われた投稿の代理投稿です.


 Yan Lauria の投稿

このパーティクル発生器のスクリプトはcomet Morigiのアート作品「風の展望台」のものを提供いただいており、アビス@JOGのこのパーティクルによるインスタレーションも、彼女のアート作品のひとつと考えています。

SLでこのような渦巻く風の場を発見し、それを可視化してアート作品としたのはcomet Morigiですが、その後、リンデンはなんかよく分からない理由により、この風の場を弱め、孤立シムではまったくの一様流にしてしまいました。

それをJOGでSLを超える、さまざまな表現の可能な作品として蘇らせてくれたIseki先生の感謝いたします。

パラメータの設定の仕方によって、本来の流体中で観察することのできない直線構造が現れることがあり、これが本当に起こりうるものなのかという点でも大変意義のあるものと思います。

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Friday, 30 January 2015, 7:36 PM
 

実用的になるように,ちょっと機能拡張しました.

1.風のエネルギーを計算して,エネルギーが一定になったら(風が定常状態になったら),外力を自動的に加えるようにしました.

2.period 変数を導入し,風のモジュールの呼び出し回数が period を越えたら,外力を自動的に加えるようにしました.
  なお,period が 0な場合(デフォルト),この機能は働きません.

3.Jos の外力は人為的(?)なので,新しく外力を定義いました.

  • force 0 : ランダム:これは同じ
  • force 1 : 北風
  • force 2 : 東風
  • force 3 : 南風
  • force 4 : 西風
  • force 5 : 渦

注意) あまり力を加えすぎると,速度が速くなって数値計算の条件(グリッドの数に関連します)を超えて,暴走します.
    その場合は stop または reset コマンドで一旦風を止めてください.
    暴走しないように,速度を制限した方が良いのでしょうか?

 

LSL の新しいコマンド

 

ソースコードは subversion のリポジトリで http://www.nsl.tuis.ac.jp/svn/opensim/opensim.modules/trunk にあります.

風のモジュールは World ディレクトリ以下です.このモジュールは 0.8.1専用です.0.8.0 では動きません(ちょっと修正すれば動く)

 

 

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Friday, 30 January 2015, 10:11 PM
 

キャプチャ画面を載せておきます.

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Saturday, 31 January 2015, 12:33 AM
 

お風呂に入っていて気が付いたんですが,C#から呼び出すんだから,FFTのCのプログラムもスレッドセーフに書かなきゃならない.

書き直しだ..... sad

アビスはシングルSIMだから,たぶん大丈夫.

Picture of Yan Lauria
Re: 風の場 (Yan Lauria )
by Yan Lauria - Saturday, 31 January 2015, 3:13 PM
 

いいですね!

コントローラのスクリプトを入れ替えて試してみます。 

上限ですが、あまり速くなると、パーティクルが猛吹雪になってしまうのもなかなかいいのですが、、スナップショットでは流線が分からなくなるってのもあるので、暴走しない程度に速度制限を設けてもらえますでしょうか?

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Saturday, 31 January 2015, 3:54 PM
 

微分方程式の -(u・∇)u が崩れるようです(ここが連続的にならなくなる).

後,一定方向に流れると,どんどんエネルギーが大きくなります.

対策を考えてみます.

 

 

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Sunday, 1 February 2015, 2:32 AM
 

Yan様. 別件のお願い.

アビスに適用しているモジュールは C# から Cの共有ライブラリを呼び出しています.
この方法は設定などに若干スキルを要しますので,再配布などを考えて全部 C# で書き直してみました.

ただし FFT までは書けないので(書く気はしないので),AForge.Math.dll を使用しています.

AForge はサンプルプログラムがあまりないで,ほぼ勘で書いてます.
プログラムが正しいかどうか確認するために,VAR_TEST, JOG_TEST の風の動きが変でないか見てもらえないでしょうか?

よろしくお願いします.

Picture of Yan Lauria
Re: 風の場 (Yan Lauria )
by Yan Lauria - Sunday, 1 February 2015, 12:26 PM
 

Iseki様

VAR_TESTとJOG_TESTをしばらく見ていました。

よどみ点付近でパーティクルの流線が不整合に見える時もあったかと思ったんですが、今見た限り、どこにも湧き出し点や吸い込み点もないし、連続条件を満たす流れって、偶然にはできないと思うので、大丈夫じゃないでしょうか。

そもそも、こういう流れを現実世界で見ることはできないのですが、二次元非圧縮性流体の解のひとつには間違いないと思います。

ところで、計算式で粘性係数をその場で変えることはできるのでしょうか? Dampingと同じ?

 

 

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Sunday, 1 February 2015, 1:56 PM
 

ありがとうございます.

>> ところで、計算式で粘性係数をその場で変えることはできるのでしょうか?

今は固定(0.001)ですが,変更可能なようにすることも可能です.修正します.

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Sunday, 1 February 2015, 2:32 PM
 

>> 今は固定(0.001)ですが,変更可能なようにすることも可能です.修正します.

補足: 0.001 は式の中の値で,スケーリングされています.

Picture of Iseki Fumikazu
Re: 風の場 (Yan Lauria )
by Iseki Fumikazu - Sunday, 1 February 2015, 10:51 PM
 

以下の Wiki にまとめました.

http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?OpenSim%2FWind

マジで,本業および家庭が不味いので,この件はここで一区切りとさせて頂きます.(優先度を下げます)

 

Picture of Yan Lauria
Re: 風の場 (Yan Lauria )
by Yan Lauria - Monday, 2 February 2015, 8:22 AM
 

Isekさま、どうもありがとうございました。

FacebookやSL/OpenSim教育方面のメーリングリストでも案内を始めています。

お互い、本業と家庭には気をつけましょう^^;