MotionSolveの時刻歴結果すべてに対し、オートパワースペクトル密度、クロスパワースペクトル密度および伝達関数を算出するスクリプト
Overview
MotionSolveの時刻歴結果すべて対し、オートパワースペクトル密度、クロスパワースペクトル密度および伝達関数を算出するスクリプトを作成しました。
MotionSolveのabfに含まれるMarker Displacement / Velocity / Acceleration / ForceおよびExpressionをすべて抽出し、上記処理を実行します。
FFT処理したデータは複素数の形式でh3dファイルに書き出します。
HyperGraphの複素結果グラフを用いることで、簡単に振幅/位相 or 実部/虚部のグラフを書くことができます。
オートパワースペクトル密度、クロスパワースペクトル密度および伝達関数で異なるサブケースに算出結果を格納しています。クロスパワースペクトル密度および伝達関数には、基準信号の指定が必要となり、基準信号の数だけサブケースを作成します。基準信号の数は任意で、指定方法は後述します。
abfファイルの階層構造をほぼ維持していますが、h3dファイルはComponentが3成分しか格納できませんので、回転成分はTypeを分けて格納しています。
また、types=inputとして、基準信号のみの処理結果を格納しています。
Pre-Requisite
本ページで紹介したスクリプト、サンプル結果ファイルはこちらです。
- サンプルモデル
今回は、6つの剛体ボディが弾性ばね指示されているモデルを考えます。4か所で地面に接地しており、接地面4か所に無相関なランダム変位を上下方向に与えた場合の各点の応答を計算しています。この条件下で、各点のオートパワースペクトル密度および各接地面の上下変位を基準としたクロスパワースペクトル密度および伝達関数を算出します。
Usage/Installation Instructions
- スクリプトの実行方法
Altair Composeで添付のomlスクリプトを開きます。
7行目でabfファイルのファイル名を指定後、abfファイルのあるフォルダをファイルブラウザで開いていることを確認し、開始をクリックするのみです。
オートパワースペクトル密度、クロスパワースペクトル密度および伝達関数を算出した_cpsd.h3dが出力されます。
- 処理パラメータの設定
2種類の信号AfとAを考えた場合、オートパワースペクトル密度APSD、クロスパワースペクトル密度CPSD、伝達関数TFはそれぞれ
となります。2種類の信号が異なる場合がクロスパワースペクトル密度、同じ場合はオートパワースペクトル密度でクロスパワーをオートパワーで割ったものが伝達関数です。
クロスパワースペクトル密度の処理パラメータは14~16行目で変更できます。
t_sample : 切り出し時間を2sec = 周波数刻み0.5Hz
t_operlap : オーバーラップ率50%
下記のように各切り出し時間に関してFFT処理を行い、2種類の信号で相関を計算します。その和を取ることで平均化処理が行われ、2種類の信号で相関のある信号のみが残り、相関の無い信号は相殺されて無くなります。FFT処理時にはハニングウィンドウが使用されます。また、maxfreqはh3dへ書き出す際の最大周波数です。
- 基準信号の指定
クロスパワースペクトル密度および伝達関数算出のための基準信号は10~12行目で指定しています。MotionSolveの出力の中から選択します。
load_type : typesを指定します。Marker Displacementなどです。
load_idx : requestsのidを指定します。今回はMarker Displacementは接地面変位の4つしか含まれないため、[1 2 3 4]です。複数の変位出力がある場合は、インデックスで指定できます。
load_dir : componentsのidを指定します。今回はZ変位ですので4です。[2 4]などの複数指定も可能です。
requests数×components数の基準信号が作成され、各基準信号ごとにクロスパワースペクトル密度および伝達関数が算出されます。
Typeに含まれないものがある場合はエラーになりますので、下記を修正してください。
REQSUBがある場合もここの修正で対応可です。
Post-Requisite
使用製品:Altair MotionSolve/MotionView、Altair Compose
よくあるエンジニアからの質問はこちら