第30話 プラグイン機能について
今回はOPTISHAPE-TSのプラグイン機能について解説します。
*****
プラグイン機能はユーザーが考案した評価関数をOPTISHAPE-TSの形状最適化で使うための機能となります。 ここだけ聞くと「え、じゃああの値を最小化したい!」とか「この値を制約したい!」とか色々と夢が膨らんでしまうので(それはそれでいいんですが)、実際にやろうとすると結構大変なんだよということが伝わればと思いながらご説明したいと思います。
OPTISHAPE-TSの最適化アルゴリズムの概略については第17回の記事でもお話ししましたが、図だけ再掲しておきます。
注目するべきなのは「1. 状態方程式を解き、評価関数の値を計算する。」と「2. 随伴方程式を解き、評価関数の感度を計算する。」の部分です。 ひと続きとなっているこの2つをシステム的に見ると、現在の形状(設計変数)を入力として、評価関数の値とその感度を出力とするようなことになっているわけです。 つまりOPTISHAPE-TSからしてみれば、この仕様さえ満たしていれば中身がどのような評価関数に対するものであっても構わないのです。 ということで、その部分をユーザーにカスタマイズしてもらえるようにして、好きな評価関数を使えるようにしようというのがこの機能となります。 ユーザーカスタマイズ部分を以降ではユーザープログラムと呼ぶことにします。
*****
例として、プラグイン機能を使って静弾性解析における最大Mises応力を評価することを考えてみましょう。 OPTISHAPE-TSではプラグイン機能を使わなくても最大Mises応力は標準の機能で評価できますが、今回は具体的なイメージを持ってもらうためにあえてプラグイン機能で評価することを考えてみます。
まず 1. の処理になった段階で、OPTISHAPE-TSはあらかじめ指定された名前のユーザープログラムを実行します。 このときに、OPTISHAPE-TSからユーザープログラムへ現在の形状を表すNastranバルクデータファイルの名前を渡します。 ユーザープログラムでその名前のファイルにアクセスすることで、現在の形状情報(節点座標)を知ることができます。
次に、ユーザープログラムで静弾性解析(順解析)を行い、変位とMises応力の最大値を計算します。 変位や応力の計算にはNastranなど既存の各種数値解析ソフトウェアを使うことができます。 ただし第18回の記事でもお話ししたように、最大Mises応力のような関数の値の最大値を評価するためにはなんらかの工夫が必要となるので注意が必要です。
さらに、最大Mises応力の感度を計算するためには随伴解析で得られる変位(随伴変位あるいは随伴変数)も必要となります。 随伴解析については過去の記事でも少しお話ししましたが、今回は静弾性解析の外力を特定のものに置き換えたようなものとなります。 そこで、随伴解析の境界条件をユーザープログラムで作成した上で、静弾性解析と同じように解析を実行して随伴変位を計算します。
最後に、得られた変位と随伴変位を使って感度の節点値ベクトルを計算します。 感度を表す式は評価関数を設計変数で微分して求められますが、そこには空間積分が含まれるので感度の計算においても値をただ求めればよいのではなく、数値積分を行って正しく積分を求める必要があります。 求められた感度の節点値ベクトルと先ほど計算した最大Mises応力の値を、OPTISHAPE-TSからあらかじめ受け取っていた名前のファイルに書き込み、OPTISHAPE-TSに渡します。
以上をまとめると、プラグイン機能を使うにあたってユーザープログラムでは以下のことを行う必要があります。
- OPTISHAPE-TSから受け取った有限要素モデルに対して、必要であれば順解析を実行して状態変数を求める。
- 評価関数の値を計算する。
- 必要であれば随伴解析の境界条件を作成し、随伴解析を実行する。
- 数値積分を行って感度の節点値ベクトルを計算する。
- 評価関数の値と感度の節点値ベクトルを出力用ファイルに書き出す。
計算するべき評価関数の値や随伴解析の境界条件および感度の式、ならびに順解析や随伴解析が必要になるかどうかは、ユーザープログラムで評価したい評価関数の定義によります。 あらかじめ評価関数を定義したうえでそれらを理論的に求め、数値計算を行うユーザープログラムを実装するというのが実作業の流れになるでしょう。
*****
今回はOPTISHAPE-TSの形状最適化におけるプラグイン機能についてご説明しました。 感度計算を自力で行わなければならないという点で上級者向けの機能とはなりますが、逆に言えば、感度の計算さえ正しくされていればOPTISHAPE-TSの他の評価関数や各種機能とは自由に組み合わせてご利用いただけるということになります。
なお、本機能をご利用いただくには大規模対応オプションライセンスが必要となります。 機能の仕様を含む詳細については製品に同梱されているマニュアルをご覧ください。
★ご意見・ご感想はこちらへ★
https://www.quint.co.jp/cgi-bin/qrepo-impr.cgi