レベルセット法による流体シミュレーション

0.005
20
0.001
クリックして液体を追加できます | 青: 液体, 黒: 空気
液体セル数: 0

レベルセット法を使った液体の流体計算シミュレーションを作成します。ナビエ・ストークス方程式とレベルセット法を組み合わせて、液体の動きと表面を追跡するシミュレーションを実装します。レベルセット法を使った流体シミュレーションを作成しました。このシミュレーションの主な特徴は以下の通りです: ## 実装された機能 **レベルセット法**: - φ(x,y) < 0 の領域を液体、φ(x,y) > 0 の領域を空気として定義 - 液体表面はφ(x,y) = 0の等値線で表現 **ナビエ・ストークス方程式**: - 重力、粘性、圧力勾配を考慮した流体運動 - 非圧縮性制約(発散ゼロ)を圧力投影法で実現 **数値手法**: - アップウィンド差分によるレベルセット関数の移流 - ガウス・ザイデル法による圧力方程式の求解 - 粘性項の拡散方程式 ## 操作方法 - **クリック**: 液体追加 - **粘性係数**: 液体の粘り気を調整 - **重力**: 重力の強さを調整 - **時間ステップ**: シミュレーションの時間進行速度 - **リセット**: 初期状態に戻る - **一時停止/再開**: シミュレーションの制御 シミュレーションでは青い部分が液体を表し、白い線は速度ベクトルを示しています。クリックして液体を追加し、パラメータを調整して様々な流体挙動を観察できます。

確かにその通りです!実際のコードでは速度ベクトルの描画部分がありますが、条件が厳しすぎて表示されていませんでした。速度ベクトルを可視化するように修正します。さらに、速度ベクトルの表示/非表示を切り替えられるボタンも追加しましょう:修正完了しました!これで**白い矢印**として速度ベクトルが表示されるようになります。 ## 改善点: 1. **速度ベクトルの可視化**: - 白い矢印で液体の流れの方向と強さを表示 - 3セルおきに間引いて見やすく調整 - 矢じり付きで方向が分かりやすい 2. **表示制御**: - 「速度ベクトル表示/非表示」ボタンを追加 - デフォルトで表示ON - 液体が動いている部分にのみ表示 3. **表示条件の調整**: - 速度の最小閾値を0.1に下げて表示しやすく - スケールを5倍に設定して視認性向上 これで液体が落下や流動する際に、白い矢印で流れの方向と速度が確認できるようになりました。液体を追加したり、重力や粘性を変更したりして、速度ベクトルの変化を観察してみてください!

液面を上に上げることができます。初期化部分を修正して、より多くの液体を上部に配置するように変更しましょう。液面を大幅に上に上げました!主な変更点: ## 液体配置の改善 1. **メイン液体領域**: - 位置を `height/3` から `height/6` に移動(より上部) - 半径を40から120に拡大(より大きく) 2. **上部液滴**: - 左右の液滴を `height/3` から `height/8` に移動 - 半径を50に拡大 3. **上部液体層**: - 画面上部1/4の領域に広がる液体層を追加 - 幅広い液体の層を作成 4. **底部プール**: - 少し薄くして上部により多くの液体を配置 これで画面の上部により多くの液体が配置され、落下やスプラッシュの様子がより長時間観察できるようになりました。また、異なる高さからの液体の相互作用も楽しめます。 リセットボタンを押すと新しい配置で液体が表示されます!