Loading
周波数応答解析の領域分割対応とテストの追加
概要
周波数応答解析を領域分割(MPI並列)で実行できるようにし、ctest に周波数応答解析のテストを 追加する。制御ファイルのキーワードとデータ行の仕様は変更していない。
Close #834 (closed)
モード重ね合わせで領域をまたぐ量は、固有ベクトルと荷重の内積、および質量正規化に使う内積の 2つだけである。この2つを内部節点だけの部分和から allreduce で総和すればモード係数が全ランクで 共有され、変位の組み立ては各領域内で完結する。外部節点は他ランクが内部節点として持つため、 部分和に含めると二重計上になる。あわせて作業配列の長さを内部節点数から全節点数に改め、 モニタ節点をグローバル節点IDから解決し、ランク0ガードを外して全ランクが解析本体を呼ぶように した。
テストには、周波数応答解析が事前の固有値解析の結果を必要とする点への対応が要る。固有ベクトルは ランクごとの分散結果ファイルとして読まれるため、逐次で作った結果ファイルを同梱してもMPI実行では 読めない。そこで メッシュ名_eigen.cnt を置くと固有値解析を前段として実行し、そのログと結果を 本解析に渡す方式にした。時刻歴結果も比較対象に加えている。
テストケースは 1.0×0.2×0.1 の片持ちはり(12〜72要素)を基準構成とし、1ディレクトリにつき 要素タイプ・!FLOAD・!BOUNDARY・モード重ね合わせパラメータのいずれか1条件だけを変化させる 構成にした。落ちたテストから原因の条件が特定でき、拡張は該当ディレクトリにケースを足すだけで 済む。この方針は tests/README.md と README.ja.md に記載した。
変更内容
| コミット | 要約 |
|---|---|
| a9bc9f1b Fix mode index when reading eigenvectors in frequency response analysis | !EIGENREAD の開始モードが1以外のとき固有ベクトルを誤った位置に格納していた |
| d0f945a9 Support MPI domain decomposition in frequency response analysis | 内積のallreduce、作業配列長、モニタ節点の解決、ランク0ガードの除去 |
| 07e59ebb Support eigen analysis prior to frequency response analysis in tests | 固有値解析を前段に実行して結果を受け渡す仕組みをテストスクリプトに追加 |
| 3df1d899 Add frequency response analysis tests | 片持ちはりの16ケース |