周波数応答解析の結果値の修正と応力・ひずみの出力
概要
周波数応答解析の結果値の誤り2件を修正し、静解析・時刻歴応答解析と同じルーチンで ひずみ・応力・主応力を出力できるようにする。
Close #801 (closed) Close #833 (closed)
このブランチは !607 (merged) の続きであり、その4コミットを含む。 先に !607 (merged) をマージしてほしい。
線形弾性では応力は変位の線形写像であるから、複素応答の応力も実部と虚部に分解できる。 実部と虚部はそれぞれ位相 ωt = 0 と ωt = -π/2 における実数の応力テンソルであり、 主応力やMises応力のような非線形な派生量も通常どおり計算できる。そこで実部・虚部それぞれを 変位として設定し、静解析と同じ応力回復ルーチンを呼び、ラベルに _real と _imag を付けて 2組出力する。361要素の既定である非適合要素は非適合モードを変位増分から更新するため、 変位を直接代入せず増分の形で渡している。
2組を1つの結果ファイルに収めるため m_make_result を分割した。従来の書き出しルーチンは ファイルの開閉と時刻の書き出しだけを行い、項目の追加は新設のルーチンがラベル接尾辞付きで 行う。可視化用には2つの結果データを連結するルーチンを足した。積層シェルが層ごとに同じ項目を 複数組出力している仕組みを1階層上に広げたもので、既存ルーチンの外部インタフェースは 変えていない。周波数応答解析専用だった出力ルーチンと、可視化データ組み立て用のモジュール fstr_frequency_visout は削除した。変位・速度・加速度の選択は従来どおり !DYNAMIC の iout_list で行い、それ以外の項目は !OUTPUT_RES と !OUTPUT_VIS で指定する。
結果ファイルのラベルは静解析と同じ名前に _real / _imag が付いた形になり、従来の小文字ラベル (displacement 等)は廃止した。この点は後方互換ではない。振幅は実部と虚部の二乗和平方根で 得られる。ただし実部と虚部で主軸の向きが一般に異なるため、1周期での主応力の最大値は 主値の二乗和平方根では求まらない。
cmplx() の修正は結果値を変えるため tests/analysis/freq のリファレンスを更新した。 静解析・時刻歴応答解析のリファレンスは更新していない。これは m_make_result の分割が 既存の出力を変えていないことの確認になる。
| 確認 | 結果 |
|---|---|
| 1Hz加振・減衰なしの応答と静解析の比較 | 5モードで変位0.33%・Mises 9.0%、20モードで変位0.054%・Mises 2.7%。モード打ち切りの分だけ差が縮む |
| 主応力の整合 | 応力テンソルのトレースと主応力の和が一致 |
| 出力ラベル変更前後の変位・速度・加速度 | 時刻歴はビット一致、掃引の振幅は相対 1.4E-14% 以下 |
変更内容
| コミット | 要約 |
|---|---|
| 4c684524 Fix result values of frequency response analysis | 加速度の絶対値と単精度への切り詰めを修正しリファレンスを更新 |
| 97ffba30 Separate the result items of static and dynamic analysis into fstr_write_result_add | 結果項目の追加をラベル接尾辞付きで呼べるように分離 |
| 60e0ef3d Output the strain and the stress of frequency response analysis | 実部・虚部それぞれの応力回復と出力、!OUTPUT_RES のテスト追加 |