HyperStudy が行っているのは、ざっくり説明すると、次の3手順を自動化するということです。
このうち #1 の解析モデルを書き換える手法にテンプレートファイルというものがあり、解析モデルのテキストファイルをなんとでも書き換えられるという強力(な半面難しさもある)な手法です。
この手法を用いて、解析モデルの材料を書き換える方法を、2通り考えましたので、ぜひ参考にしてください。なお、解析ソルバーは OptiStruct としています。解析ソルバーごとにテキストの書式は違いますので、ご利用のソルバーに適宜照らし合わせてアレンジしてみてください。
また、定期トレーニングの資料にも詳しい説明と例題があるので、お試しください。ログインおよび "enroll me" というボタンを押す必要がある場合があります。
https://learn.altair.com/mod/resource/view.php?id=7104&redirect=1
詳しい作業は動画で見てもらうとして、テンプレートファイルの説明をします。
まず、材料カードを複数作っておきます。上から鉄、アルミ、プラスチックをイメージしています。
MAT1, 1, 210000.0, , 0.3
MAT1, 2, 70000.0, , 0.33
MAT1, 3, 1000.0, , 0.36
varname_1 (HyperStudy から見えるラベルは mat_id) という設計変数指定を行頭で行います。動画と同様に HyperStudy のエディタを使えば、実際にはこの行を自分で記述する必要はありません。
{parameter(varname_1, "mat_id", 1, 0, 2)}
そして、OptiStruct では P で始まる要素特性カードの 3マス目で材料 ID を参照するので、次のように 8桁で材料 ID を記入します。
PBEAML 1{varname_1, %8i} ROD +
+ 1.000000.0
HyperStudy 側で、この変数を整数 1, 2, 3 の離散値とすれば、
(クリックで拡大)
最適化や DOE での材料選択が可能になります。
テンプレートファイル: model01.tpl
HyperStudy アーカイブファイル: change_mid.hstx
先ほどの方法では、ID が変わってしまいますが、ソルバー入力ルールやモデルの規模、作り方によっては ID を変えたくないこともあります。その場合でも、こちらの方法が使えます。
if文については、こちらでも説明、利用例を挙げているので、参考にしてください。
https://community.altair.com/community/ja?id=kb_article_view&sysparm_article=KB0119939
こちらもテンプレートファイルの説明から行います。なお、if文に関して HyperStudy のエディタに専用の機能はないため、私自身は、一般的に高機能と言われるテキストエディタの一つを使って作成しました。
まず、最初に行頭で mat という設計変数を用意します。
{parameter(mat, "mat", 1, 0, 2)}
そして次のような if 文を作成します。これにより mat=1 なら鉄、2ならアルミ、3 ならプラスチックの MAT1 カードだけが書き込まれることになります。
{if(mat == 1)}
MAT1, 1, 210000.0, , 0.3
{endif}
{if(mat == 2)}
MAT1, 1, 70000.0, , 0.33
{endif}
{if(mat == 3)}
MAT1, 1, 1000.0, , 0.36
{endif}
あとは HyperStudy で先ほどのやり方と同様のことを行えば、このように材料選択が可能です。
テンプレートファイル: model02.tpl
HyperStudy アーカイブファイル: if_mat.hstx
動画ファイル .mp4 のダウンロード
KB0124720_HyperStudyで材料の選択を行う方法.mp4