始めに
トポロジー最適化設定カード DTPL には STRESS とうい項目があり、すべての線形静解析に対するミーゼス応力の上限値を指定することができます。
https://2024.help.altair.com/2024/hwsolvers/ja_jp/os/topics/solvers/os/dtpl_bulk_r.htm
実際には、計算コストを下げるためだと思いますが、要素一つ一つの値を直接見て制約するのではなく、こちらにあるノルム値の計算をしています。指数P 乗の平均値なので、大きい数値ほど平均値に大きく反映されます。
https://2024.help.altair.com/2024/hwsolvers/ja_jp/os/topics/solvers/os/responses.htm#reference_sd2_tcb_xhb__internal_response_appendix_r_section_bdg_vcb_xhb
ここで一つ疑問が出てきます。このノルム値は、サブケースが複数ある場合、サブケースごとに計算されるのか、すべてのサブケースを合わせて一つの値を求めるのか、どちらであろうかということです。
結論は、サブケースごとの計算です。簡単な例題を通して、サブケースごとの計算であることを、確認しましょう。
例題1: サブケース 1個
ダウンロード:
解析モデルは単純な片持ち梁です。
最適化条件は、こちらにあるやり方で、目標体積と目標剛性(コンプライアンス)両方を満たすことを目指す最適化としています。
実際には、こうです。材料を減らしたらコンプライアンスは増えるに決まっているので、絶対に達成できる目標ではありませんが、少しでも理想に近づけるような最適化を行います。
また DTPL カードの応力制約は 47MPa です。
こちらが最適化結果です。左が要素密度で、右が応力です。ノルム値は重み付けのある平均値ですので、要素一つ一つでみると制約値を超えています。
こちらが最終イタレーションのログです。当然ですが、体積、コンプライアンスとも未達で、応力制約にも引っかかって終了ということになっています。
例題2: 1/1000の荷重のサブケースを追加する
ダウンロード:
荷重を 1/1000 にしたサブケースを追加しました。他は変更していません。
サブケース 1と比べたら、応力はほとんど無視できます。ノルム値計算時は、おおよそ 0 と見なせるでしょう。
もし、ノルム値が、全サブケースの合計であるのなら、おおよそノルム値は半分になると思います。ですので、応力制約の掛かり方が変わり、最適化パターンも変わるはずです。
逆に、ノルム値が、サブケースごとの評価であるなら、追加したサブケースは最適化に何も影響を与えないはずです。
では結果を見てみましょう。
トポロジーパターンは全く同じです。最終イタレーションも同じです。
応力分布も全く同じです。
.out の最終イタレーション部分も、サブケース 2 の線形静解析に関する出力が 1行増えたほかは、完全に同じです。
まとめ
以上の検証により、DTPL の STRESS オプションで応力制約を掛けた場合、応力ノルム値は、サブケースごとに計算される、ということが分かったと思います。