前回の記事で書いたように、円柱状の棒を垂直に切った断面積Aと、角度θで斜めに切った断面積Bの関係が B = A / cosθとなることが理解できた。
thom.hateblo.jp
今回はここから、モールの応力円を理解するためにVBAを書いてみた。
モールの応力円とは、ドイツの応用力学者モールによって発見されたもので、仮想切断する角度θを変えながら垂直応力とせん断応力の関係をグラフにプロットすると、プロットされた点を結んだときに円になるというものである。
その前に前提の話をいくつか書いておく。
前提
以下のように、外力と内力は等しい力で釣り合っている。
この力を断面に垂直な方向Pnと断面に水平な方向Psに分解する。
原点とPnとPを結ぶ線は直角三角形になるので、角度θから求められる辺の比によって力の強さが求まる。
Pn=Pcosθ
同様に、
Ps = Psinθ
応力は力÷面積なので、垂直応力σ、せん断応力τはそれぞれ次の式で求まる。
※A0は断面積を表す。
モールの応力円をVBAコードで検証
本当に円になるのかVBAコードを書いて試してみた。VBAはマルチバイト文字の変数に対応しているのでこういう時に便利である。
πもθもσもτも全角文字としてそのまま書けるので数式を見ながらコードに変換していくのが楽だ。
Option Explicit Sub MohrsStressCircle() Const A0 = 150 Const P = 300 Dim θ As Double Dim r As Range: Set r = ThisWorkbook.Sheets(1).Range("A1") r.Value = "σ" r.Offset(0, 1).Value = "τ" For θ = -90 To 90 Step 1 Set r = r.Offset(1, 0) Dim Pn: Pn = P * Cos(Radian(θ)) Dim Ps: Ps = P * Sin(Radian(θ)) Dim σ: σ = Pn / (A0 / Cos(Radian(θ))) Dim τ: τ = Ps / (A0 / Cos(Radian(θ))) r.Value = σ r.Offset(0, 1).Value = τ Next End Sub Function Radian(degree As Double) As Double Const π = 3.14159265359 Radian = degree * (π / 180) End Function
これを実行するとExcelシートに値がずらっと出力されるので、散布図を挿入する。
楕円が現れるけど、これは縦横のマス目が揃っていないためなので、単位とサイズをそろえると綺麗な円になる。
ということで、今回はプログラミングの力を借りて本当に円になるということが実証できた。
ちゃんとした書籍に円になるって書いてあるんだから、なるに決まってるんだけどそれでも自分でわざわざ確認することで強烈な納得感を得ることができる。
これが記憶の定着に繋がるような気がする。