シミュレイト趣味
 =数値計算による物理的なシミュレーション・その趣味的な展開=

 子HP:パズル惰衛門 へ
アクセス解析:
 <<このホームページの趣旨について>>

 素粒子の極微スケールから宇宙的スケールまでの物理法則や、 物質(個体・液体・気体・プラズマ)とエネルギー(力学的・電気的・化学的・熱的)、 および情報を扱う科学技術、地震・火山・気象・水象などの自然現象、 あるいは生命現象や社会現象の法則などに興味のある方は多いことでしょう。

 それらのうち、シミュレイト(模擬)によってシンプルな具体例を示しやすい 現象および法則は限られ、私のような単なる科学好きに挑戦できる範囲はさらに 限られてて当然ですが、分かりやすい事象については積極的に公開することで 理解者の裾野を広げていけるのではと信じて、このHPを造ってみた次第です。

 当面のテーマは、自力と半自力のプログラム2題だけです。
 全面的な他力本願でも良ければ、シミュレイトまたはシミュレーションの 類型に合う同様のHPにリンクを追加していくことも有り得ます。

1.水路に発生した孤立波の運動

2.レイトレーシングによる3次元グラフィック

このHPが皆さんの科学的な興味を少しでも満たせることを願っています。

【謝辞】
 北上川上流の洪水シミュレーションを1960年代に創始された方々に感謝します。
 レイトレーシングプログラムと解説を1980年代半ばに著作された守川先生に感謝します。

 非定常不等流条件での水流と波動 「水路に発生した孤立波」 (準動画的)

 レイトレーシング・サンプル 「溝を転がる球体3種」 (動画には非ず)
メール アイコン  連絡先
ご意見、ご感想、ご質問などは、
こちらにメール願います。

ネットでできるコーラス鑑賞
(頭脳の休憩に、コーラスはいかが。)
シミュレーション体験コーナー(岡山理科大学)
????????????

    「水路に発生した孤立波」その2  Wide版画面からのコマ撮りによるGIF形式動画  1〜15秒間繰り返し上映
      プログラムDLや実行環境整備を省けるよう、特別に配慮して掲載。    150秒間繰り返し上映版へ
 
  <<水路に発生した孤立波の運動>>


 三角関数のような連続した波ではなく、ひと山づつ独立した安定な波が孤立波です。
 下記のプログラムで、水路の中の孤立波を体験してみて下さい。
   *** 2012年12月 新たに現象表現能力アップを施した「Wide版」を追加しました。

    プログラム名: USFlow.exe または USFlow_wide.exe プログラム倉庫へ

 (注)「Microsoft Visual Basic 2005 or 2008」による実行形式での
   配布のため、「.NET FRAMEWORK」が機能している環境以外では実行できません。


<<[Wide版]1.従来版からの機能アップ項目>>

 a.模擬対象水路区間数を40個と2倍にし、アプリ画面の横幅も拡張(横1388ドット)。
 b.再実行ボタン機能の追加で何度でも同じ動画表現が、実行途中からでも再開できます。
   (ただし再実行結果は、細部数値で若干異なることがあります。 実行終了:ウィンドウを閉じる。)
 c.時間軸上の設定は、実時間1秒刻み相当の演算結果を0.5秒で表示更新することとし、変化の早い現象
  への表現基盤を用意した条件下において、過酷な立上り・立下り波形にも破綻無く対応する安定性を獲得。
 d.上記のような早い現象でほど顕著に生じる模擬空間端部での無益な波動反射等を抑制することに成功。
 e.dを実現した新機軸は、下流端外側の曲線グラフ2種の動きでその片鱗を確認できます。
 f.水位換算エネルギー分布(運動+位置)の曲線グラフと、エネルギー数値のテキスト行とを追加しました。
 g.距離方向微分近似の方法として、事前に算出した係数数列の畳み込み演算による高度化を図りました。

  <グラフの色区分> 山吹色:水位換算エネルギー、 青色:水位(折れ線)、 暗いシアン:河床、 緑色:流量

        上図: 模擬演算開始から58秒後、中央まで移動した孤立波


<<[Wide版]2.現象模擬空間の構成など>>

 a.現象表現の諸元は次のとおりであり、現状ではプログラムの内部定数設定により容易に変更可能です。
   水路幅:20m、 河床の勾配:800分の1、 定常状態での水深と流量:1.6m&69.6m3/s、
   分割単位区間の距離:20m、 模擬範囲全長:800m、 時間範囲:300秒(上映150秒)

 b.模擬結果の解釈 → 波長:5区間約100m、 波速:約7.4m/s(定常流速2.4、長波5.0)
   この結果から、波速のうち長波分が無ければ7m/s以上にならないことから、妥当な結果と言えます。
   またこの成果を以って、今後は津波など水平水面での波動現象に挑み易くなる見込みです。


        上図: 模擬演算開始から115秒後、下流端に達した孤立波

<<[Wide版]3.ノウハウ伝達などに関する告知>>

  新たに掲載された[Wide版]に使用されているノウハウを、実際の解析検討場面に適用したいとお考えの方々に向けまして、
 内容の詳細説明行為を含む伝達の用意が有ることを告知します。
  こちらからの提示条件案は、当面は旅行券等移動(滞在)費ご負担のみ、そのほかの仔細はご相談に応じます。
  連絡先は、本ページ冒頭に掲載してあります。

 ***** ご注意 *****
 1) リンク先掲載の実行形式プログラムは、教育現場や学術目的での公開利用を除き、原則私的利用のみ認めます。
 2) 知り得たノウハウを発案者(当方)に無断で実用新案等登録対象とすることは、厳に慎んで下さるよう警告します。
 3) このプログラムを不正な手段(リバースエンジニアリングや逆コンパイル等の技法)の対象とすること、および
  あらゆる不正な手段によって詳細ノウハウを察知すること、並びに察知したノウハウを盗用することを禁じます。


<<[従来版]1.現象模擬空間の構成>>

 水路といっても、幅は200mにしてあるので河川に近い想定です。
 底の勾配は1万分の1、定常状態での水深と流量は2mと285立方m/秒です。
 距離200mを単位区間として、20区間で4kmの模擬演算を行います。

 空間表現は、分布を扱う次元で言えば、水路の流れに沿う距離方向の1次元です。
 水路幅方向には流れの一様性が仮定されていますし、高さ方向も水面の水位や水深 に纏めて扱うことで水圧の垂直方向分布などの取り扱いは避けられています。

 演算上の時間刻みは1回30秒にしてあり、60回分=30分間の模擬となります。
 ただし、画面のグラフ更新は1秒単位ごとなので実現象の30倍早い上映です。

 なお、現象を表現する基礎方程式には、非定常不等流(略称:不定流)の微分方程式を用いています。
 これについて詳しく学びたい方は、「不定流の方程式」などでネット検索をしてみると良いでしょう。


<<[従来版]2.模擬された孤立波の波速と波長>>

 掲載のプログラム実行によって画面に現れる孤立波は、波速で約4.5m/秒、波長 は1200mくらいになるでしょうか。
 定常状態の流速である0.8m/秒をはるかに上回る「長波」の波速になっています ので、この模擬演算は検証の関門をひとつクリアしています。
 なお、波形が徐々に低くなるのは、水路底面での摩擦により運動エネルギーが損失を 受けることによるものです。


<<[従来版]3.滑らかな現象表現と、それを可能とする背景>>

 ここで注目を頂きたいのが、たかだか6区間程度で孤立波1個を滑らかな流量分布と して表現している点です。

 じつは、この点が独創的な手法であり、距離方向の微分演算を単純な差分ではなく 自然スプラインを応用することにより近似曲線次数の高い(誤差の少ない)ものとし、 波動現象を扱ううえで大切な、計算の安定性も獲得しています。
(差分の誤差が無意味な波動を生み、収拾がつかなくなる傾向が回避されています。)

 このことを直感いただくために、流量分布曲線は自然スプラインが与える各区間ごと の3次関数曲線で描き、近似曲線が滑らかにつながることも示しています。
 なお、水面の高さである水位の分布グラフは、位置のエネルギーに流速のエネルギー も加えた一括のエネルギー分布しか扱っていないため、水位だけを分離して近似曲線で 描くことが難しく、折れ線グラフでの表示となっています。
  ・・・wide版では、エネルギー分布の曲線グラフを追加する代償措置を施しています。


<<[従来版]4.実現象との対比による意味づけ>>

 ところで、実際にこのような現象が起こりうるでしょうか。
 答えはYESです。
 大きな川では、河口部から数km〜数十km程度上流に潮止め堰が設けられることが ありますが、その堰のゲートを故意に急に動かして一定時間放流を増やし、再び急に戻 すと、こんなふうな津波とも呼べそうな孤立波が発生してしまいます。

 もちろん、ダムや堰の管理を預かる方々は、こんな現象を生じないよう厳重に注意を していますので、通常は心配する必要はありません。

 そのほかでは、狭い運河などで何かの拍子にできた孤立波が、かなり遠くまで伝わる 現象が知られています。

 孤立波は、英語でsoliton(ソリトン)という物質的な名前が与えられていま すが、光ファイバーの中を伝わる赤外線のごく短いパルスもソリトンと呼べる場合があ るそうです。
 光と水面の波とでは細かい性質は色々違いますが、波動の形式を持つエネルギーの 固まりが遠くまで伝わる点で、ソリトンとしての共通性があると言えそうです。


<<[従来版]5.端部での反射波について>>

 最後に、流れの最下端で波動エネルギーを綺麗に全部消滅させられない関係で、若干 の反射波が上流に戻っていく様子まで模擬されています。 これはご愛嬌です。
 現実には、最下端に何か障害物が無い限りこんな反射波は起きないと思います。
  ・・・wide版では、最下端での反射波を抑えることに成功しています。


 
  <<レイトレーシングによる3次元グラフィック>>

 1980年代半ばの月刊アスキーに掲載され、下記のとおり単行本にもなったプログラム (N88BASIC版)のうち、特にレイトレーシングの部分に惚れ込み、Quick Basic時代も引き続き楽しんで来ましたが、最新のVisualBasic文法の 習得を兼ねて、移植と若干の機能追加をしたので実行形式プログラムを紹介します。

[2007年5月上旬 追加]
 半ば本業に関連する「ダム湖の荒廃湖岸に緑を〜」という 論文に連動した3D画像を 作成する機会がごく最近あり、自己の将来活動への種まきとしてPRします。
 追加配布するのは、RayTracing5.exeと関連データファイルで、RayTracing3との相違 は次のとおりです。
 プログラム:
  1)図形データ数の増大に対応したデータ配列サイズの倍増
  2)水面下など透明体内部の透過において距離減衰(距離6.0ごと半減)を追加
  3)上記距離減衰分の補填として、その4割を透明体自身の色で補う処理を追加
  4)透過や反射による枝分かれ判定処理における打切り光強度を精密化
  5)画像表示枠サイズが宣言値より縦・横4ドットずつ削られていた分を補正
 データファイル: (22種から23種に増加)
  1)巨大プランター(PLANTER.txt)を1番目に追加し、その他を繰り下げ
  2)正12面体の2種のデータにおいて、一部の自発光強度が強過ぎたのを修正

 結果的に、巨大プランターでは60余りの立体図形を扱うことになり、処理時間が 他のデータよりも長く掛かりますので、その点はご理解を願います。
 また全般的に透明体を透過した色は以前よりも若干ですが、くすみがちとなります。
 透過での距離減衰を追加した目的は、水深による見え方の差を現実に近づけるため であり、一定の効果が得られていることは右の画像でも判断頂けるかと思います。

[追加終わり]

  プログラム名: RayTracing3.exe 又は RayTracing5.exe プログラム倉庫へ

(注)「Microsoft Visual Basic 2005」による実行 形式での配布のため、「.NET FRAMEWORK」が機能している環境以外で は実行できません。

 データファイルを多数含むZIP形式の圧縮ファイルですので、全て同じフォルダに 復元してからご使用下さい。

 図形入力が簡略化されていなかったり、ピクチャーマッピング機能も無いなど、最新 のレイトレーシング技法とは比べようもありませんが、基本的な機能の把握には十分に 役立つと思いますし、何よりも手作り的な懐かしさがここにはあります。


◇書籍名:PC‐9801 3次元グラフィックス入門 アスキーブックス
        著者 守川 穣(元 福井高等専門学校 教官)
    Amazonなどに掲載されており、入手は可能と思われます。
    図形データや計算方法などの詳細解説は、本書を利用下さい。

 なおプログラムの移植や機能追加などの改変については、著者の守川先生からご了承 を頂いています。

 ソースプログラムは、初めてのVisualBasic挑戦で、改変部分はお見せでき るような代物でないですし、アスキー社さんへの配慮もあって掲載しない方針です。
 ただ、どんなめちゃくちゃソースでも気にしないという方は、ご相談下さい。


<<改変の概要>>
 以下にオリジナルプログラムからの変更点を記載しておきます。

1)N88BASICから(QuickBasic経由で)VisualBasicへ  言語仕様に合わせた変更。
 (型宣言、IFなどの構文、関数、描画コマンドなど)

2)イベント駆動型の新しい大枠構成を造り、ボタンクリック等のイベント検出により 元のプログラム全体をグラフィック画面の再描画サブルーチンとして呼び出す形式に 組み替え。

3)最初のクラス宣言のところで、大部分の変数を前もって定義しておく形式とした。
 (旧Basicでは、宣言なしでサブルーチン枠を越えていたことへの補償。)

4)フルカラー化の試験を兼ねてグラディエーションのあるタイトル画面を追加。

5)初期のPC−9801が8色どまりだったため、縦2×横2計4ドットで1画素を 表していたが、フルカラー化に合わせて1画素1ドットに精細化を図った。

6)プログラム内のDATA文や、それを読むREAD文が使えなくなったことに対応 して、立体図形データを複数のテキストデータファイルに独立させ、リストボックスで 選択されたデータファイルを対象として処理する形式に変更。
 (実行形式プログラムのユーザーは、自己作成の図形データを読ませたい場合には、 データファイルのどれかを名前を変えずに書き換える方法が採用可能。)

7)視点を変える機能として、視野参照点を通る垂直軸回りの回転と、垂直方向の移動 をテキストボックスに入力したうえで再実行できるように追加した。


<<移植での苦労話>>
 イベント駆動型ということで、グラフィック画面のリフレッシュサブルーチンを抜け 出さないと画面が表示されず、旧来のように順次表示ドットが書き変わる課程が見られ なくなったことが一番のダメージでした。
 その違和感に悩まされ、遠回りの苦労を強いられました。

<<データファイルについて>>
 データファイルで紹介する立体図形の組み合わせ中には、著者の守川先生がお造りに なられたデータもありますが、それを大きく翻案したものや新たにデータを作ったもの も加えています。
 とくに正12面体は、根拠資料は既に無くしましたがデータを作るのに難儀した思い 出深い立体です・・・。

inserted by FC2 system