ランダム応答解析
ランダム応答解析は、道路の凹凸、ジェット騒音、振動認定テストなど、統計的にしか説明できない励起に対して構造がどのように応答するかを予測します。負荷は時刻歴ではなくパワースペクトル密度として与えられ、結果はピークではなくスペクトル密度と二乗平均平方根値になります。
これは通常のAbaqusモデル以上にCoreform IGA for Abaqusで重要です。Coreform IGAメッシュはAbaqusのユーザー要素であり、Abaqus/Standardはそれらについてランダム応答を後処理しません。IGAモデルでは周波数抽出がsolverから得られる最後の結果となるため、その後のランダム応答をモードデータから計算する必要があります。 respspec ユーティリティは、Abaqus がネイティブ要素に適用されるのと同じ手順を使用してこれを行います。
1 ユーティリティが計算するもの
励起は、モードに投影されたクロススペクトル密度行列です。基礎運動の場合、これは参加係数から直接得られます。
\[ S^f_{\alpha\beta}(f) = \sum_J g_J^2 P^J(f) \sum_i \sum_j \Gamma^i_\alpha \Gamma^j_\beta \sum_I \Psi^{IJ}_{ij} (2\pi f)^{2\lambda_I} \]
各モードは、その複素伝達関数を通じて応答します。 \(H_\alpha\)、一般化された座標のクロススペクトル密度が与えられ、物理的な結果はモード形状から次のようになります。
\[ S^q_{\alpha\beta}(f) = H_\alpha \, S^f_{\alpha\beta}(f) \, H^*_\beta \qquad S^u_{NN}(f) = \phi^N_\alpha \, S^q_{\alpha\beta}(f) \, \phi^N_\beta \]
速度と加速度のスペクトル密度には次の要素が含まれます。 \((2\pi f)^2\) および \((2\pi f)^4\)。すべての RMS 値は、台形則によって周波数範囲全体、つまり Abaqus が使用するであろう正確な周波数点にわたって積分されたスペクトル密度の平方根です。
2 RMSミーゼス応力
ミーゼス応力は応力成分の二次形式なので、各応力成分のRMS値だけからミーゼス応力のRMSを再構成することはできません。このutilityでは、Abaqusが同じ量に用いるSegalmanらの方法を使用します。 \(T_{\alpha\beta} = \psi_\alpha^\mathsf{T} A \, \psi_\beta\) モード応力ベクトルの場合 \(\psi\) そして定数行列 \(A\) 不変式の:
\[ \text{RMISES} = \sqrt{\sum_\alpha \sum_\beta V_{\alpha\beta} \, T_{\alpha\beta}} \]
を求めます。ここで \(V_{\alpha\beta}\) は一般化座標の分散行列です。
RMS応力成分からミーゼス応力を組み立ててはいけません。RMS値は符号を持たないため、本来相殺される成分どうしが加算されてしまいます。検証モデルでは、この方法は最大で約3倍の誤差になります。
3 解析の実行
ワークフローが一致する 応答スペクトルのウォークスルー。一度抽出すれば、好きなだけケースを実行できます。
export RESPONSE_SPECTRUM_DIR=/path/to/cf/interop/abaqus/response_spectrum
export PYTHONPATH="$RESPONSE_SPECTRUM_DIR"
abaqus python -m respspec extract myjob.odb myjob_modal.npz --fields U,S
python3 -m respspec random myjob_modal.npz mycase.json myjob_rms.npz --fields U,V,A,S結果は次のとおりです RU, RV, RA、および RS、成分ごとに 1 つの RMS 値、および RMISES 周波数ステップが応力モード形状を書き込んだとき。ピーク結果を読み取るのと同じように正確に読み取ります。 load_peak_fields_npz.
4 ケースファイル
ランダム応答ケースファイルには、周波数関数、基礎運動、それらの間の相関関係、スイープ、およびモード減衰が記述されています。
{
"psds": {
"QUAL_TEST": {
"type": "BASE",
"gravity": 9.81,
"rows": [[0.01, 0.0, 20.0], [0.04, 0.0, 200.0], [0.01, 0.0, 2000.0]]
}
},
"base_motions": [
{"dof": 1, "load_case": 1, "kind": "ACCELERATION"},
{"dof": 2, "load_case": 1, "kind": "ACCELERATION"}
],
"correlations": [
{"psd": "QUAL_TEST", "type": "UNCORRELATED", "weights": {"1": [1.0, 0.0]}}
],
"lower_frequency_hz": 20.0,
"upper_frequency_hz": 2000.0,
"n_points": 20,
"bias": 3.0,
"frequency_scale": "LOGARITHMIC",
"damping": 0.05
}周波数関数。 の各行 psds エントリは実数部、虚数部、および時間当たりのサイクル数で表した周波数であり、一致します。 *PSD-DEFINITION のdata行に対応します。値は周波数に対してlog-log補間し、表の範囲外では端の値を一定に保持します。type BASE が必要です gravity 値とその縦座標は、周波数ごとの g の二乗単位です。 FORCE はpower単位です。 DB に対してデシベルがかかります db_reference 周波数の代わりにバンド番号 1 ~ 15 を使用します。
基礎運動。 各エントリは、1 ~ 6 の自由度、荷重ケース番号、およびスペクトルの種類です。 ACCELERATION, VELOCITY、または DISPLACEMENT。 1 つの荷重ケース内のすべての基礎運動は、種類を共有する必要があります。プライマリベースのみがサポートされます。
相関。 相関関係は、実数と虚数のペアとして記述された複素重みを持つ 1 つ以上の荷重ケースに 1 つの周波数関数を結び付けます。タイプ CORRELATED では、荷重ケース内のすべての自由度のペアが完全に依存するため、それらの参加係数が外積の前に追加されます。タイプ UNCORRELATED は対角成分だけを残すため、各寄与は二乗和として加算されます。
周波数スイープ。 周波数範囲を、その内部にある各固有振動数で区切り、各区間に n_points 個の周波数点をAbaqusのbias式で配置します。biasが1より大きい場合、応答変化が最も急な区間端の固有振動数付近に点を集中させます。既定の20点・bias=3はAbaqusと一致します。RMS値の精度はこの積分精度に依存するため、収束していない場合は n_points を増やしてください。
5 制限事項
基礎運動励起のみが実装されています。集中、分散、およびコネクタの負荷、移動ノイズの相関関係、および UPSD および UCORR user subroutineは未対応です。secondary baseもサポートしません。これはrandom response stepがprimary baseのみを持つという制約と一致します。
6 検証
応答スペクトル検証と同じ3つの鋼製solid modelに、それぞれ6個のランダム応答stepを設定しています。1方向および3方向加振、相関・非相関荷重、2つの重ね合わせload case、変位基礎スペクトル、2種類の周波数scaleを網羅します。抽出したモードをPythonで再合成すると、Abaqusの RU, RV, RA, RS、および RMISES 約の相対誤差以内に \(200 \times 10^{-9}\) 程度の相対誤差で再現します。これはAbaqusが出力する単精度fieldの精度に相当します。生成した周波数sweepもAbaqusの各周波数点と一致します。
Abaqus とは独立して、ホワイトノイズに対する単一自由度の応答がその閉じた形式に対してチェックされます。 \(\sigma^2 = S_0 / (8 \xi \omega_0^3)\)、周波数点の数が増加するにつれて一致度が向上することが示されています。