LLMでほとんどのコードを作成しています。
ボールを落とした場合の荷重を出力しています。自由落下の延長です。
いくつかの数値解析でどうなるか試してみました。
設計用の衝撃荷重が取得できるわけではありません(dtの決め方次第)。
記載していますがエネルギー法の考え方に従うのがなじむと思います。
⚙️ 設定
🕹️ 操作・結果
📊 シミュレーション結果
最大反力: 0.00 N
📈 高さグラフ
🏎️ 速度グラフ
🚀 加速度グラフ
💥 反力グラフ
⚡️ 衝撃力計算 (力積)
仮定の衝突時間から平均衝撃力を計算します。
計算結果: 0.00 N
🍃 衝撃力計算 (エネルギー保存)
落下エネルギーが衝突面の変形エネルギーに変換されるとして最大衝撃力を計算します。
計算結果: 0.00 N
※静的変形量は、ボールを静かに置いた場合の床のたわみ量です。📊 全エネルギーグラフ
📝 計算の解説
このシミュレーターで使われている計算方法の概要です。
1. シミュレーション本体(リアルタイム反力)
落下するボールの動きを、ごく短い時間(フレーム)ごとに逐次計算しています。
- ボールの運動は、オイラー法・ルンゲ=クッタ法・シンプソン法(中点法)から選択できます。
- 床への衝突時は「床に到達した瞬間」を線形補間し、その時点の速度で反発係数をかけて反発処理を行います。
- 衝突後の速度が十分小さくなり、かつ1秒間ほぼ同じ高さが続いた場合に「静止」と判定し、計算を自動停止します。
- 反力(グラフ)は、衝突時の運動量変化をもとに「力 = 運動量の変化 ÷ 時間」で算出しています。
- エネルギーグラフは「位置エネルギー+運動エネルギー」の合計(J)を時系列で表示します。
2. 注意・詳細
- 本シミュレーションは「床に到達した瞬間の補間」や「数値積分法の特性」により、床面でわずかに浮いた値や微小な速度が残る場合があります。これは数値計算上の仕様です。
- dt(タイムステップ)が大きすぎると、衝突の精度やエネルギー保存性が悪化します。dtは小さめ(例: 0.01以下)を推奨します。
- dtの値によってはブラウザがハングアップするので0.01のオーダーで行ってください。
- 1フレームでの計算ループ回数を1000回までに制限し、超えた場合は警告を出してシミュレーションを強制停止します。
3. 衝撃力計算(力積法)
「もし指定した時間で衝突が終わるとしたら、平均でどれくらいの力になるか?」を計算します。
- まず、高さ $h$ から落下したときの衝突直前の速度 $v$ を求めます。($v = \sqrt{2gh}$)
- 反発係数 $e$ を使い、衝突前後の速度の変化量 $\Delta v$ を求めます。
- この速度変化を、ユーザーが指定した「衝突時間」$\Delta t$ で割ることで、衝突中の平均衝撃力を算出します。
- 計算式: $F_{avg} = \frac{m \cdot \Delta v}{\Delta t} = \frac{m(1+e)v}{\Delta t}$
4. 衝撃力計算(エネルギー法)
「ボールが持っていた位置エネルギーが、すべて地面の変形に使われると、最大でどれくらいの力になるか?」を計算します。
- ボールを静かに置いたときの地面のたわみ(静的変形量 $\delta_{st}$)から、地面を一種の「ばね」と見なします。
- この方法では、衝突中の最大衝撃力が求まります。橋の設計など、実際の工業分野で使われる考え方です。
- 計算式: $F_{max} = W \left( 1 + \sqrt{1 + \frac{2h}{\delta_{st}}} \right)$
(ここで $W=mg$ はボールの自重)
操作
他の方法の計算
力積による衝突時間(s)は、dtを0.016などの本体と同じにすると同じような反力になります。
エネルギー保存の方は、K061と同じです。静的変形量は静的ひずみ λ0 (mm)の値を入力することになります。

コメント