トポロジー最適の設定項目を変更して複数の最適化をシーケンシャルにバッチ実行するためのpythonスクリプトが知りたい

啓介 大竹_20471
啓介 大竹_20471 Altair Community Member
edited March 2023 in 質問と回答 (Q&A)

お世話になります、YEC大竹です。

例として、剛性最大化の体積制約にて、5-20%まで5%刻みにて

板厚制約を5mm刻みにし、この組み合わせの総当りを夜間に流して帰宅したいと考えています。

ローカル端末での実行を考えているため、シーケンシャル処理にて

帰宅直前に設定を読み込ませてRunして帰宅すれば、総当り分の最適化が実行できている状態にするには

どのようなスクリプトにすればよいでしょうか。

Answers

  • bellogi@altairjp.co.jp
    bellogi@altairjp.co.jp
    Altair Employee
    edited March 2023

    以下のPythonコードでは目標質量と最小板厚制約の値(それぞれ 3つ)のすべての組み合わせを作って、順番で最適化を実行します。最適化の実行名には目標質量と最小板厚制約の値が記載されます。このサンプルスクリプトでは荷重ケースがすべて計算されます(デフォルト)。荷重ケースも変数になる場合は、loadCases というパラメータを追加する必要があります。トポロジー最適化実行コマンドの詳細については、「ファイル」>「ヘルプ」>「Python APIデモ」>「Inspire」>「Structure」>「Run」>「TopologyOptimization」>「詳細」をご確認ください。

    残念ながら、現行バージョン(2022.2.1)では不具合の影響で最小板厚制約の値が計算モデルに反映されません。バージョン 2022.3 で不具合が修正される予定です。

     

    from hwx.inspire import TopologyOptimization, gui
    from hwx import inspire

    model = inspire.getModel()
    params = TopologyOptimization.Params()

    tarMassList = [20.0, 30.0, 40.0]
    minThickList = [0.015, 0.02, 0.025]

    for tarMass in tarMassList:
        for minThick in minThickList:
            # Params can also be set by directly assigning the values
            params.runName = 'Min. Thick ' + str(minThick) + 'm, Mass ' + str(tarMass) + '%' 
            params.objective = "MAXIMIZE_STIFFNESS"
            params.massTarget['percent'] = tarMass
            params.thicknessConstraints.min = minThick

            print('params\n', repr(params))
            with gui.waitCursor(message='Solving: ' + params.runName):
                 run = TopologyOptimization(params)

  • 啓介 大竹_20471
    啓介 大竹_20471 Altair Community Member
    edited March 2023

    ありがとうございます。参考にやってみます。

    不具合修正のバージョンについては、リリース時期のおよその時期が分かれば告知頂けると嬉しいです。