Welcome to PyFemtet’s documentation!

概要

PyFemtet は ムラタソフトウェア製 CAE ソフト Femtet の拡張機能を提供します。

  • PyFemtet はオープンソースライブラリであり、無償かつ商用利用可能です。

  • このライブラリは現状のまま提供され、いかなる保証もいたしません。

  • PyFemtet は Femtet 本体のライセンスを一切変更しません。

  • 評価のための試用版 Femtet は ムラタソフトウェア にお問い合わせください。

重要

PyFemtet 0.x をご利用中の皆様へ

PyFemtet バージョン 1 では、ユーザビリティと保守性等の向上のため、関数や引数の仕様が変更される予定です。詳しくは、以下のページをご覧ください。

PyFemtet の主要な機能

PyFemtet は Femtet の Python マクロインターフェースを利用して機能を提供するライブラリです。現在、 PyFemtet の唯一の機能は設計パラメータの最適化 であり、pyfemtet.opt サブパッケージとして実装されています。

pyfemtet.opt は、以下の特徴を有します。

  • 単目的および多目的の最適化

  • プロセスモニタによるリアルタイム進行状況の表示

  • 複数の Femtet インスタンスによる並列計算

  • Excel 等で分析が容易な csv 形式での結果出力

例題

ソレノイドコイルのインダクタンス
_images/gau_ex08.png
円形パッチアンテナの共振周波数
_images/her_ex40.png

Tip

例題 セクションにより多くの実施例があります。

シンプルな API

下記は多目的最適化の実施例です。add_parameter()add_objective() で問題を設定し、optimize() で実施することができます。それ以外は通常の Femtet のマクロスクリプトを使用します。詳細な実施例は 使い方 セクションを確認してください。

from pyfemtet.opt import FEMOpt

def max_displacement(Femtet):
    dx, dy, dz = Femtet.Gogh.Galileo.GetMaxDisplacement()
    return dy

def volume(Femtet):
    w = Femtet.GetVariableValue('w')
    d = Femtet.GetVariableValue('d')
    h = Femtet.GetVariableValue('h')
    return w * d * h

if __name__ == '__main__':
    femopt = FEMOpt()
    femopt.add_parameter('w', 10, 2, 20)
    femopt.add_parameter('d', 10, 2, 20)
    femopt.add_objective(max_displacement, name='max_displacement', direction=0)
    femopt.add_objective(volume, name='volume', direction='minimize')
    femopt.optimize(n_trials=20)

目次