2024/11/04

OpenSeesPyによる多質点モデルの時刻歴応答解析③

 地震応答解析においては地震荷重や、直接積分手法などの解析条件を定義する必要があり、 ここではそれらをOpenseespyで定義する方法を説明します。

1.時間刻みの設定:

dt = 0.01
ここでは、解析の時間刻み(Δt)を0.01秒に設定しています。この値はシミュレーションの時間解像度を示し、入力する地震波のデータの刻み幅を入力します。

2.外乱となる時刻歴データの読み込み:

motion = pd.read_csv('white_noise.csv')
motion = list(motion['time'])
ratio = 0.393700787 #cm/s2→in/s2
values = [round(float(i)*ratio,4) for i in motion]
op.timeSeries('Path', 1, '-dt', dt, '-values', *values)

地震応答解析においては、外乱データは時刻歴のデータとなります。そこで、その時刻歴のデータを外部csvファイルなどに用意し、そのデータの読み込みをここで定義しています。地震波の加速度入力データは通常gal(cm/s2)で表されることが多いですが、ここでは、単位系はOpenseespyで用いられている単位系(in/s2)に適宜換算する必要があります。ここでは例題としてホワイトノイズ加振を実施するため、適当な乱数に基づいて下図のようなホワイトノイズの時刻歴波形をcsvデータとして用意し入力します。入力データをリスト形式のデータに変換し、単位換算用の係数を乗じた上で、timeSeriesコマンドにて、Path形式でOpenSeesPyに指定した時間刻みの時刻歴荷重として読み込ませています。


3.荷重パターンの設定:
op.pattern('UniformExcitation', 1, 1, '-accel', 1)

一様励振(Uniform Excitation)パターンを荷重パターンとして設定し、入力した構造モデル全体を対象に加振します。ここでは全体座標系X方向に、2で定義した時刻歴荷重データを加速度として入力し加振する設定となっています。

4.時刻歴応答解析の準備:

op.wipeAnalysis()
op.algorithm('RaphsonNewton')
op.system('BandGen')
op.constraints('Plain')
op.integrator('Newmark', 0.5, 0.25,'A')
op.analysis('Transient')

これらの行では、時刻歴応答解析のための設定を行っています。

  • wipeAnalysis() では以前の解析設定をクリアしています。(ここでは以前の解析設定はありませんが、念のため定義します。)
  • algorithm('RaphsonNewton') では、非線形問題を解く際のアルゴリズムを選択定義します。ここではニュートンラプソン法を用いた解法を選択しています。
  • system('BandGen') は、連立方程式を解くための線形ソルバーを定義します。ここでは、とりあえずBandGeneralを定義しています。
  • constraints('Plain') で、制約条件を定義します。
  • integrator('Newmark', 0.5, 0.25,'A') では解析における積分手法を定義しています。ここでは、Newmark、γ=0.5、β=0.25をそれぞれ指定することで、平均加速度法を用いることを定義しています。この手法は通常の動的解析で広く用いられます。
  • analysis('Transient') ではどのような解析を行うかを定義します。Transient Analysisを指定し、時刻歴荷重の入力を想定した時間変化を考慮した解析を行う準備をしています。時刻歴解析を行うことから、結果も時刻歴で出力されることになり、解析結果を記録するコードを書く必要があり、後ほど説明します。
全体として、このコードは地震応答解析の初期設定を行い、地震などの外力に対する構造物の応答を計算するための準備をしています。ここまでで構造モデルと時刻歴解析の荷重条件、解析条件が定義できましたので次は解析を実行し結果を見ていきます。

0 件のコメント:

コメントを投稿