Loading
(修正版)3x3 ブロッキングシェル要素の自動生成機能
Closes #59 (closed), #768 (closed) (注: #768 (closed) も close してよいかは要判断)
!642 (closed) の修正版です。59_shell_auto_input の rebase & conflict 解消を行った上で、失敗していたテストに関わる修正と、chikasuiro/FrontISTR!2 (merged) の提案を取り込みました。途中で取り下げた変更は、加えた側・戻した側の両方のコミットから除いて履歴を整理したため、議論中で触れている 6d0bf870 などのコミットはブランチに残っていません。
!642 (closed) からの変更
- 641/761/781 の直接入力を受け付ける
- !642 (closed) は全体メッシュでの 641/761/781 の直接入力をエラーにしていたが、この判断を取り下げた。
- 611/731/741 入力へ置換していたテストとチュートリアルを元に戻した。SA-AMG の失敗もこれで解消する。
- 熱解析で 761/781 を受け付ける
- 熱伝導のテストは、逐次では温度の残差が実行ごとに変わる形で、MPI では error setMASS を出す形で失敗していた。
- 逐次では rmerge がメッシュの節点数ぶん結果配列を読んで範囲外に出て、MPI では 761/781 の分散メッシュがそのまま熱解析へ渡っていた。
- !642 (closed) の議論よりソフトウェア側で対処することとし、熱解析は 761/781 を並進節点だけで 731/741 として組み立て、回転ダミー節点は温度 0 で固定する。6 自由度シェルで自由度 4-6 を使わないのと同じ扱いである。行列の非ゼロ構造も並進節点だけで作る。
- !642 (closed) の熱解析専用のメッシュ読込経路は除き、fistr1・hecmw_part1・rmerge が同じメッシュを読むようにした。熱の結果にもダミー節点を温度 0 で出力する。READRESULT は結果を局所節点の添字で読むため、結果はメッシュと同じ節点を持つ必要がある。
- ダミー節点の生成を混在メッシュに限る(chikasuiro/FrontISTR!2 (merged))
- 611/731/741 と 3 自由度の要素が同じメッシュにあるときだけ、ダミー節点を生成して 641/761/781 へ変換する。シェル・梁だけのモデルは従来どおり 6 自由度の要素で解くため、テストの参照解は master のままである。
- 自動生成したダミー節点は ALL に入れない。ALL への並進の拘束・荷重が、ダミー節点(回転)にまで及んでいた。
- !BOUNDARY と !CLOAD の自由度 4-6 は、!642 (closed) の fstr_setup_BOUNDARY の書き換えに代えて、制御ファイルの読込後にダミー節点の自由度 1-3 へ移す。移さない !SPRING、!VELOCITY、!ACCELERATION、!FLOAD、!EQUATION の自由度 4-6 はエラーで止める。
- 変換を通るテストと、誤った入力での停止(議論 1〜4)
- 混在メッシュの 731/741 入力のテストを追加。
- 並進拘束版、回転拘束版、熱解析の 3 種類(CI リソースの問題がありますが...)
- 静解析の 761/781、動解析の 641/761/781 の熱荷重も停止
- 停止メッセージは、hecmw_abort が出力を書き出さずに終了するため表示されない(master 既有の問題)
- ダミー節点を手書きした 641/761/781 で、自由度 "4-6" の !BOUNDARY, !CLOAD は、ダミー節点の自由度 1-3 に書くよう促して停止
- 手書きかどうかは、入力に書いたダミー節点だけが ALL に入ることで見分ける
- append_new_groups は、既存の append_new_group と同じく、グループ名が既存と重なれば停止する。
- 分散メッシュで、641/761/781 の要素を持たないランクでも自由度 4-6 を移す(回転拘束版の MPI テストで発覚、4ea984dd で修正)
- 並進節点が外部節点としてだけ入るランクで移し替えが行われず、別の節点の自由度や配列の外へ書き込んでいた
- 移し替えと停止の判断は全ランクの集計で揃え、回転を持たない節点への !CLOAD の検査は内部節点で行う
変更内容
!642 (closed) の 3 コミットは、後で取り下げた部分(全体メッシュでの入力の拒否、fstr_setup_BOUNDARY の書き換え、テスト入力の書き換え)を除いてある。
| コミット | タイトル | 内容 | 元の MR |
|---|---|---|---|
| a55f6d37 | Add dummy shell node create | 731/741 の読込時に回転ダミー節点を生成して 761/781 へ変換する | !642 (closed) |
| 912cbe3b | Add finite rotation for 781 shell | split-layout の 781 で MITC4 の有限回転に対応する | !642 (closed) |
| 99894758 | Add beam conversion | 611 入力を内部 641 へ変換する | !642 (closed) |
| 4b5cdf63 | Support 761/781 in heat analysis | 熱解析で 761/781 を 731/741 として組み立て、回転ダミー節点を温度 0 で固定する | 本 MR |
| 41544672 | Create the rotational dummy nodes only for a mixed-dof mesh | 611/731/741 と 3 自由度の要素が同じメッシュにあるときだけ変換する | chikasuiro/FrontISTR!2 (merged) |
| 80c6c78f | Leave the rotational dummy nodes out of the heat matrix pattern | 熱解析では 641/761/781 の非ゼロ構造を並進節点だけで作る | chikasuiro/FrontISTR!2 (merged) |
| 6d3248b9 | Keep the generated dummy nodes out of the node group ALL | 自動生成したダミー節点は ALL に入れない。入力に書いたダミー節点はこれまでどおり ALL に入る | chikasuiro/FrontISTR!2 (merged) |
| 3050ef30 | Move the rotational dof to the dummy nodes after reading the control file | 制御ファイルの読込後に !BOUNDARY と !CLOAD の自由度 4-6 をダミー節点へ移し、移さない条件の自由度 4-6 はエラーで止める | chikasuiro/FrontISTR!2 (merged) |
| 89160d60 | Add tests of 731/741 input mixed with solid elements | 手書きの混在テストからダミー節点を除いた 731/741 入力と、自由度 4-6・ALL の条件を与える 741 入力のテストを加える | 本 MR |
| 4ca98466 | Add heat tests of a solid-shell mixed model | 同じ混在モデルの熱伝導のテストを、手書き 761/781 と 731/741 入力で加える | 本 MR |
| d310aedd | Stop on the thermal load of 641/761/781 | 熱荷重の分岐が無かった静解析の 761/781、動解析の 641/761/781 を、731/741 と同じく停止させる | 本 MR |
| ccc05bc3 | Stop on dof 4-6 given to beam/shell nodes with explicit dummy nodes | ダミー節点を手書きした要素の並進節点に !BOUNDARY・!CLOAD の自由度 4-6 を与えたら、ダミー節点の自由度 1-3 に書くよう促して停止する | 本 MR |
| fd89f2ef | Check the group names in append_new_groups | 追加するグループ名が既存と重なれば、append_new_group と同じく停止する | 本 MR |
| 4ea984dd | Convert the rotational dof on every rank of a distributed mesh | 641/761/781 の要素を持たないランクでも自由度 4-6 を移し替えるよう、判断を全ランクの集計で行う | 本 MR |
Edited by Kanato Kono