始めに
OptiStruct 2025.1 では、変形後のジオメトリ情報、つまり距離や面積を応答にすることができるようになっています。
カードは DRESP1 です。
https://help.altair.com/hwsolvers/os/topics/solvers/os/dresp1_responses_attributes_bulk_r.htm
対象となるジオメトリ情報はこちらです。
https://help.altair.com/hwsolvers/os/topics/solvers/os/dresp1_geometric_response_bulk_r.htm
今回は、変形後の2節点の距離を使った最適化を行う例題を示します。
なお、この DRESP1 の ATTA=GEODEFR (GEORESP も) は HyperMesh は未対応ですので、テキストエディタで手書きする必要があります。
例題
ダウンロード:
解析モデルは、1要素のバネモデルです (CBUSH 要素)。
元の長さを 10mm で、変形後の長さが 50mm 、つまり伸びは 40mm となるようにばね定数を最適化します。
1.0 ~ 10.0 の設計変数を用意して、それをバネ特性のばね定数のところに割り当てます。
HyperMesh 的には、読み込んだモデルのこの辺りを見てください。
応答は、バネの2節点間の距離を取得する応答 (DRESP1) と、その目標値との残差を作る応答 (DSYSID) の 2個を作ります。
通常では、DREPS1 も DSYSID も HyperMesh で作成できますが、今回の DRESP1 は作成できず、必然的に、その DRESP1 を使う DSYSID も作成できませんので、テキストエディタでの作成です。
なお、例題モデルを読み込んでも、なんとなく残り香があるだけで、何もわかる状態ではありません。
https://help.altair.com/hwsolvers/os/topics/solvers/os/dsysid_bulk_r.htm
DRESP1 で節点 1 と 2 の変形後の長さを取得して、DSYSID で目標値との誤差を取得しています。
DSYSID は目標値ぴったりならちょうどゼロ。常に正の数値です。ですので、最適化としては、DSYSID を最小化すればよいことになります。
この目的関数定義の DESOBJ(MIN) はコンプライアンス最小化や質量最小化といった普通の最適化と同じです。
さて 100N で 40mm 伸ばしたいので、最適なばね定数は 100/40 = 2.5 N/mm です。
.out ファイルを見てみると、きっちり 2.5N/mm を求めることができました。