シミュ君

一念発起して物理学をゼロから勉強し直すぞ! 応援してください!

シミュ君

一念発起して物理学をゼロから勉強し直すぞ! 応援してください!

最近の記事

変位勾配テンソルによる変形(定数)

これから連続体力学(弾性体力学&流体力学)の勉強を進めていくための準備として、連続体の変位と変形の関係を表す変形勾配テンソルの可視化を3次元グラフィックスで行うよ。変形勾配テンソル($${D}$$)とは、変位$${\delta \boldsymbol{x}}$$に対する変形$${ \delta \boldsymbol{r}}$$ の関係を表すテンソルだよ。 $$ \delta \boldsymbol{r} =\frac{\partial \boldsymbol{r}}{\p

    • 【three.js WebGL】3次元グラフの作り方

      前回に開発した2次元カラーマップは2次元平面を構成する格子点に任意の色を設定することで物理量などを可視化することができるね。今回2次元平面の垂直成分を与えることで、3次元的な可視化を行うことができるね。次のアニメーションは前回と同様、次式で与えた値をに対応する描画色と垂直成分を与えているよ。 $$ F(x,y,t) = \sin(\frac{x}{2}+\omega t) \times \sin(\frac{y}{2}+\omega t) $$ 下図のようにワイヤーフレー

      • 【three.js webGL】2次元カラーマップの作り方

        今日はthree.jsで2次元平面上の各点に任意の色を指定することで、意味のある2次元配色を与えることで何かしらの量を可視化する2次元カラーマップの作り方を解説するよ。今回は下図のようなN✕Nの格子を個の小さな正方形を配置してポリゴンを生成し、(N+1)✕(N+1)個の格子点にそれぞれ任意の色を設定するよ。 下のアニメーションは各点$$(x,y)$$の値を次の式で設定して、1を赤、-1を青となるように各点の描画色を指定した結果だよ。 $$ F(x,y,t) = \sin(

        • 任意結合張力による運動:9連結子による角運動量保存運動

          前々回に導出した任意結合張力による運動の例として、重力なしで9個の質点を繋いで角運動量が一定になるように初速度を与えたときの運動をシミュレーションするよ。 Pythonプログラムソース上記のシミュレーションを行うプログラムソースを公開するよ。もしよかったら試してみてください。これからも応援してください。よろしくお願いしまーす! #################################################################TITLE =

        変位勾配テンソルによる変形(定数)

          【Python】任意多重結合振子によるカオス運動

          上記の2重振子運動における張力の計算アルゴリズムは、手動で導出しました。今回は、以前に解説した任意多重結合による運動の計算アルゴリズムに従って、張力に関する連立方程式もPythonで計算できるように改造するね。 計算結果次のアニメーションは固定された支点からつながった三角形型のおもりと、そこからぶら下がる2個のおもり、合計5個のおもりと6本の接続の系だね。接続数が6本だから、張力に関して6本の連立方程式となるのだけれども、 np.linalg.solve関数を用いて数値的に

          【Python】任意多重結合振子によるカオス運動

          【Python】任意多重結合における長さ補正力の導入

          前にも述べたけれども、ルンゲ・クッタ法では誤差が単調増加してしまうので、どんなに誤差設定(相対誤差・絶対誤差)を小さくしても長い経過時間後には計算が破綻してしまうね。そこで、以前にも導入したひもの長さを初期値に戻す補正力を導入するよ。下図は$${i}$$番目と$${j}$$番目のおもりをつなぐひもの補正力を表す模式図だよ。 ひもの長さの初期値を$${ L^{(0)}_{ij}}$$、相対速度ベクトルを$${\bar{\boldsymbol{v}}_{ij}}$$、相対位置ベ

          【Python】任意多重結合における長さ補正力の導入

          【Python】2重振子運動シミュレーション

          上記で導出したアルゴリズムの適用例として、2重振子運動をシミュレーションしてみるね。 2重振子運動の計算アルゴリズム2重振子運動の計算アルゴリズムの導出を行うね。強制振動運動させることを想定して支点の位置・速度・加速度ベクトルを$${\boldsymbol{r}_0, \boldsymbol{v}_0, \boldsymbol{a}_0}$$、2つの振り子の位置・速度と外力ベクトルをそれぞれ$${\boldsymbol{r}_1, \boldsymbol{v}_1, \bo

          【Python】2重振子運動シミュレーション

          任意多重結合振子運動の計算アルゴリズム(直交座標系)

          多重結合振子のモデルと運動方程式今回は多数の振り子が伸び縮みしない任意の形状で接続された多重振子をシミュレーションする方法を解説するよ。下図は$${i}$$番目のおもりに多数のおもりが接続された模式図だよ。図では3つのおもりが結合されているけれども、個数は何個でも問題ないよ$${i }$$番目のおもりに接続された伸び縮みしないひもの張力を$${\boldsymbol{f}_{ki}}$$と表しているよ。また、i番目のおもりの位置を$${\boldsymbol{r}_i}$$、

          任意多重結合振子運動の計算アルゴリズム(直交座標系)

          【粒子法 MPS法】アルゴリズムの改善:ECS法 ポアソン方程式の生成項の誤差補償

          上記のnoteで解説したHS法に加えて、下記の書籍で詳しく解説してある標準MPSの高精度化に着手しているよ。目次は次のとおりだよ。 書籍:粒子法:連続体・混相流・粒状体のための計算科学 P.83 HS法 ポアソン方程式生成項の高精度化 P.85 HL法 ラプラシアンモデルの高精度化 P.87 ECS法 ポアソン方程式生成項の誤差補償 P.92 GC法 勾配モデルの高精度化 P109 DS法 人工斥力導入による安定化 P118 SPP法 表面粒子の境界条件適正化 P124

          ¥500

          【粒子法 MPS法】アルゴリズムの改善:ECS法 ポアソン方程式の生成項の誤差補償

          ¥500

          【Python】重力+張力+強制振動による強制振子運動

          強制振子運動とは単振子の支点を強制的に振動させることで生じる運動だよ。単振動運動と同様、特定の角振動数(共鳴角振動数)で支点を振動させると、振り子の振幅が増幅されるね。ただし、単振動運動とは異なり、共鳴角振動数が振り子の振幅によって異なるので、単一の振動数で振り子が回転することはないね。下図は強制振動運動に関係するベクトル量の模式図だよ。 単振子運動とは異なり支点も空間に固定ではなく移動させることを考慮して、位置ベクトルを$${\boldsymbol{r}_ {\rm bo

          【Python】重力+張力+強制振動による強制振子運動

          【three.js】3次元グラフィックス:コイル型ばねの作り方

          3次元グラフィックスでコイル型のばねを作成するための方法を解説するよ。ばねの形状を決定するために必要な基本的なパラメータは、ばねの長さ(lengthプロパティ)、ばねの半径(radiusプロパティ)、管の半径(tubeプロパティ)と巻き数(windingNumberプロパティ)だよ。ばねの長さとばねの半径は、管断面の中心座標を基準としていることに注意してください。次の図はコイル型ばねの正面図と平面図、断面の拡大図だよ。 3次元グラフィックスはポリゴンで表現する必要があるから

          【three.js】3次元グラフィックス:コイル型ばねの作り方

          【Python】張力+重力による円錐振子運動

          前回紹介した張力+重力による運動は単振り子運動だったけれども、特定の初期条件を与えるとおもりは同一円周上を等速円運動するよ。これは振り子のひもとおもりの軌跡が円錐状になることから円錐振子運動って呼ばれるね。円錐振子運動の理解に必要な量を図示したのが下図だよ。おもりに加わる力は単振子運動と同じだね。 円錐振子運動が実現する条件円錐振子運動は特定の初期条件の場合のみ実現されるね。その条件は次の2つだよ。 (1)張力と重力の合力が円周軌道平面方向を向く    → $${\bol

          【Python】張力+重力による円錐振子運動

          【粒子法 MPS】アルゴリズムの改善:HS法 ポアソン方程式生成項の高精度化

          上記のnoteで解説した標準MPS法に加えて、下記の書籍で詳しく解説してある標準MPSの高精度化に着手していくよ。目次は次のとおりだよ。 書籍:粒子法:連続体・混相流・粒状体のための計算科学 P.83 HS法 ポアソン方程式生成項の高精度化 P.85 HL法 ラプラシアンモデルの高精度化 P.87 ECS法 ポアソン方程式生成項の誤差補償 P.92 GC法 勾配モデルの高精度化 P109 DS法 人工斥力導入による安定化 P118 SPP法 表面粒子の境界条件適正化 P1

          ¥500

          【粒子法 MPS】アルゴリズムの改善:HS法 ポアソン方程式生成項の高精度化

          ¥500

          【Python】保存量補正力の導入

          この前に紹介した伸び縮みしないひもによる張力による単振り子のように、ひもの長さのように本来絶対に保存してほしい量がある数値計算の場合、計算誤差の蓄積で破綻してしまうことがよくあるね。陽的解法である4次のルンゲクッタなどのアルゴリズムの場合、誤差が単調増加することが知られているね。今回利用しているPythonのscipy.integrate.solve_ivpは1ステップあたりの相対誤差と絶対誤差を設定できるので問題ないように思えるけれども、単調増加することは避けられないので、

          【Python】保存量補正力の導入

          【WebGL three.js】クォータニオンによる3次元回転と姿勢制御

          現在、3次元グラフィックスの復習をしているよ。今回は3次元空間内の物体の姿勢を表すクォータニオンの復習と姿勢制御の練習を行うよ。その前に3次元空間上の任意の位置ベクトル($${\boldsymbol{r}}$$)を、任意の回転軸($${\boldsymbol{l}}$$)で回転($${\phi}$$)させたときの大切な公式の復習から始めるよ。回転後の位置ベクトルを $${\boldsymbol{r}'}$$ と表すと、次のような関係式が知られているね。 $$ \boldsy

          【WebGL three.js】クォータニオンによる3次元回転と姿勢制御

          【Python】張力+重力による単振子運動

          単振り子とは伸び縮みしないひもに結びつけたおもりによる振り子だよ。ばねの長さに比例した復元力を与えれば良い単振動と違って、伸び縮みしないひもに加わる張力の計算方法は簡単じゃないね。まずは単振り子に関係する物理量を図示するね。 おもりには重力の他に張力が加わるのだけれども、この張力は先にも述べたけれどもおもりの位置だけでは決めることはできないね。支点の位置を原点としておもりの位置ベクトルを$${\boldsymbol{r}(t)}$$とすると、張力$${\boldsymbol

          【Python】張力+重力による単振子運動