高校物理、大学受験、大学物理、プログラミングの記事を書きます。

OpenModelicaを使って「バネとダンパーの減衰振動」を計算してみよう。

2019/11/02
 
この記事を書いている人 - WRITER -

こんにちは(@t_kun_kamakiri)(‘◇’)ゞ

最近、モデリカのためのオープンソースであるOpenModelicaとか使って遊んでいます。

OpenModelica公式サイト

カマキリ
OpenModelicaを使って遊んでみましょう♪

本記事の本筋は以下の内容です。

本記事の内容
OpenModelicaを使って・・・
  • バネ+ダンパーによる減衰振動


のモデル作りから計算までを体験してみましょう(^^)/

 

OpenModelicaについては前の記事でちょろっと説明しました。

前回の記事はこちら

 

OpenModelicaのバージョンは、「1.13.2 (64-bit)」を使っています。

はじめてのModelicaプログラミング -1日で読める わかる Modelica入門- (MBD Lab Series)

はじめてのModelicaプログラミング -1日で読める わかる Modelica入門- (MBD Lab Series)

広野 友英
2,420円(11/22 05:27時点)
発売日: 2017/10/20
Amazonの情報を掲載しています
Modelicaによるシステムシミュレーション入門 MBD Lab Series

Modelicaによるシステムシミュレーション入門 MBD Lab Series

PeterFritzson
発売日: 2015/06/20
Amazonの情報を掲載しています

 

バネ+ダンパーによる減衰振動をOpenModelicaで体験してみよう

 

バネの振動における理論を説明した後、

OpenModelicaを使ってバネの振動の解析をしたいと思います(^^)/

 

バネとダンパーによる減衰振動の理論は?

ダンパーの振動の運動方程式

\begin{align*}m\ddot{x}=-D\dot{x}-kx\tag{1}\end{align*}

と、このように書くことができます。

  • バネ定数:\(k=10\)[N/m]
  • 減衰定数\(k=10\)[N\dot s/m]
  • 質量:\(m=10\)[kg]

とします。

(1)式は以下のように置くことで、見通しの良い形に変形することができます。

  • \(\gamma=\frac{D}{2m}\)
  • \(\omega_{0}=\sqrt{\frac{k}{m}}\)

ダンパーの振動の運動方程式

\begin{align*}\ddot{x}+2\gamma\dot{x}+\omega_{0}^2 x=0\tag{2}\end{align*}

(2)式の一般解、\(x(t)=e^{\lambda t}\)と置き(2)式に代入して以下の特性方程式より\(\lambda\)を決めることで求めることができます。

\begin{align*}\lambda^2+2\gamma\lambda+\omega_{0}^2=0\tag{3}\end{align*}

 

「減衰定数から来る項\(\gamma\)」と「振動から来る項\(\omega_{0}\)」の大小関係によって、

以下の4つの解に分類することができます。

※2回の微分方程式なので、(1)から求めた\(x\)では「積分定数(\(A,B\))」が2つあります。

今回、OpenModelicaで解析しようとする条件は、

  • バネ定数:\(k=10\)[N/m]
  • 減衰定数\(k=10\)[N・s/m]
  • 質量:\(m=10\)[kg]

\(\gamma=0.5\)、\(\omega_{0}=1\)なので、

No.2(減衰振動)の解析をすることになります。

この「積分定数」は、初期条件を定めることで決定されます。

初期条件を以下のように決めます。

  • 質点の初期位置:\(x_{0}=0[m]\)
  • 質点の初速度:\(v_{0}=10[m/s]\)

そうすると、以下のように解が定まります。

(1)式の特殊解

\begin{align*}x(t)=e^{-\gamma t}\bigg(\frac{v_{0}+\gamma x_{0}}{\omega}\sin(\omega t)+x_{0}\cos(\omega t)\bigg)\tag{4}\end{align*}

※(4)式から初期条件を定めて得られた解なので、特殊解と呼ばれています。
※\(\omega=\sqrt{\omega_{0}^2-\gamma^2}\)

 

具体的に数字を入れると、

\begin{align*}x(t)=\frac{20}{\sqrt{3}}e^{-0.5t}\sin(\sqrt{0.75} t)\tag{5}\end{align*}

となります。

 

バネの振動をOpenModelicaでモデル作成

 

では、OpenModlicaを使ってバネのモデル構築をしてみましょう。

 

操作方法は以下の動画を参考にしてください。

カマキリ
動画を見てできたかな?

 

OpenModelicaで得られた解と理論解(5)式とを比較

 

OpenModelicaの結果を「csvファイル」として出力ができるので、csvファイルにして理論解の波形と重ねてみます。

OpenModelicaのcsvファイル出力

※出力方法は以下の記事の後半を参考にして下さい。

前回の記事はこちら

 

 

OpenModelicaで得られた解と理論解(5)式の比較

 

カマキリ
Pythonを使ってグラフを重ねてみます。

グラフの比較

一致しているので、グラフが重なっています(^^)/

カマキリ
めでたし、めでたし

 

この記事を書いている人 - WRITER -

コメントを残す

Copyright© 宇宙に入ったカマキリ , 2019 All Rights Reserved.