hexagon logo

すみません.ある面に付着し,消滅したマーカー粒子を他の面から再度発生させることは可能でしょうか.詳細条件に関しては添付した資料に明示させていただきます. 同時に複数のことをお聞きして恐縮ですが,何卒宜しくお願い致します。

すみません.ある面に付着し,消滅したマーカー粒子を他の面から再度発生させることは可能でしょうか.詳細条件に関しては添付した資料に明示させていただきます.
同時に複数のことをお聞きして恐縮ですが,何卒宜しくお願い致します。

Attached Files (1)
  • 一般的な設定ではないようなので、通常の入力として用意されていません。しかし、ユーザーが任意の設定が、可能な限りできるようにユーザー関数やスクリプト機能が用意されています。スクリプト機能等を駆使して実現可能ではないかと思いますが、結構ハードルは高いかもしれません。
     
    まず、面A側ですが、タイミング関数usu_cycle_start()で、use_particle_get1( pidata, pfdata, idata, fdata, cdata)
    を呼びます。何れの関数も詳細はリファレンス(ソルバー編)を確認してください。
    use_particle_get1は粒子情報を取得できかつ、設定もできる関数です。マーカー粒子は壁に付着することはできないので、この関数内で各粒子の座標値から壁に付着しているかどうかの判断をし、付着と判断したら、消滅させ、その数をカウントし、グローバル変数として格納します。その数は、B面が生成される粒子の発生数になりますね。
     
    B面での粒子の発生では、
    use_particle_generation_prop( label, isw, pidata, pfdata, idata, fdata, cdata)を使用します。
    元々この関数は、粒子直径,粒子温度,粒子有効個数,粒子速度などが変更できる関数ですが、戻り値として、0以外を返すことで、その粒子は発生しません。先のA面で消滅した数をグローバル変数として受け取り、その数だけ生成するように戻り値を設定することで実現できると思います。
    以上、概要になりますが、TRYしてみてください。ご参考まで。