PyFemtet


NamePyFemtet JSON
Version 0.1.3b0 PyPI version JSON
download
home_page
SummaryDesign parameter optimization using Femtet.
upload_time2023-12-07 06:43:05
maintainer
docs_urlNone
author
requires_python>=3.11
licenseCopyright (c) 2023 Murata Manufacturing Co., Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords cae fem design optimization
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Welcome To PyFemtet.opt !
PyFemtet.opt は、Femtet を用いてパラメータ最適化を行うことのできる Python パッケージです。

## 機能

Femtet を使ったシミュレーションによって、パラメータの最適化を行うことができます。
連続変数の単目的・多目的最適化に対応しています。
いくつかの最適化結果可視化機能を備えており、最適化結果の分析が可能です。

***注意:現在、本ライブラリは α 版です!***

## install

インストール方法は以下の通りです。

1. Femtet のインストール

    [https://www.muratasoftware.com/](https://www.muratasoftware.com/)


1. Femtet のマクロ有効化

    詳しくは、Femtet インストール後にスタートメニューから「マクロ機能を有効化する」を選択してください。
    マクロ機能を利用するためには excel が必要です。

1. Python のインストール

    [https://www.python.org/](https://www.python.org/)

1. PyFemtet のインストール

    ```pip install PyFemtet```

1. Femtet のアンインストール
    PyFemtet をインストールした環境で下記のコマンドを実行してください。依存ライブラリは削除されません。
    ```
    pip uninstall PyFemtet
    ```

## 動作するサンプルコード・サンプル解析モデル
.zip ファイル内の以下の位置に、.py ファイルと、それと同名の .femprj ファイルが含まれています。
```
.\src\PyFemtet\FemtetPJTSample
```
このフォルダに含まれる ```.femprj``` ファイルは、変数設定済みの単純な解析モデルです。対応する同名の ```.py``` ファイルは、そのパラメータを PyFemtet を用いて最適化するサンプルコードです。 

Femtet でいずれかの ```.femprj``` ファイルを開き、その後対応する ```.py``` ファイルを実行してください。



## 使い方

基本的な使い方は以下の通りです。

1. Femtet プロジェクトの作成

    Femtet 上で解析モデルを作成します。最適化したいパラメータを変数として登録してください。

1. 評価指標の設定

    解析結果やモデル形状から評価したい指標を出力する処理を Femtet Python マクロを用いて記述してください。
    以下に例を示します。
    ```python
    from win32com.client import constants
    from win32com.client import Dispatch
    Femtet = Dispatch("FemtetMacro.Femtet")

    # マクロから解析結果を開く
    Femtet.OpenCurrentResult(True)
    # 解析結果を取得するオブジェクトを作成
    Gogh = Femtet.Gogh
    # 流速を取得する設定
    Gogh.Pascal.Vector = constants.PASCAL_VELOCITY_C
    # 目的の面で積分し流量を取得
    _, ret = Gogh.SimpleIntegralVectorAtFace_py([2], [0], constants.PART_VEC_Y_PART_C)

    print(ret.Real) # 流量(次のステップでこれを評価指標にする)
    ```

1. メインスクリプトの作成

    上記で定義した評価指標を含むスクリプトを書いてください。以下に例を示します。前のステップで記述した評価指標が ```get_flow``` 関数の中に記述されています。

    ```python
    from PyFemtet.opt import FemtetScipy
    from win32com.client import constants
    # from win32com.client import Dispatch
    # Femtet = Dispatch("FemtetMacro.Femtet") # このスクリプトでは使用しません

    '''h, r という変数を有する解析モデルで簡易流体解析を行い、ある面の流量を 0.3 にしたい場合を想定したスクリプト'''

    # 解析結果から流量を取得する関数
    def get_flow(Femtet):
        # この関数は、第一引数に Femtet のインスタンスを取るようにしてください。
        # Femtet.OpenCurrentResult(True) # この処理はあってもいいですが、不要です
        Gogh = Femtet.Gogh
        Gogh.Pascal.Vector = constants.PASCAL_VELOCITY_C
        _, ret = Gogh.SimpleIntegralVectorAtFace_py([2], [0], constants.PART_VEC_Y_PART_C)
        flow = ret.Real
        return flow

    # 最適化処理を行うオブジェクトを用意
    FEMOpt = FemtetScipy()

    # 解析モデルで登録された変数
    FEMOpt.add_parameter("h", 10, memo='高さ')
    FEMOpt.add_parameter("r", 5, memo='半径')

    # 流量が 0.3 に近づくようにゴールを設定する
    FEMOpt.add_objective(get_flow, name='流量', direction=0.3)

    # 最適化実行中にその収束状況を表示する(experimental)
    FEMOpt.set_process_monitor()

    # 最適化の実行 ※実行すると、csv ファイルでの最適化過程の保存が始まります。
    FEMOpt.main()

    # 最適化過程の一覧表示(最適化終了時点での csv ファイルの内容と同じです)
    print(FEMOpt.history)

    ```
    注意:Femtet 内で数式を設定した変数に対し ```add_parameter``` を行わないでください。数式が失われます。

1. ***Femtet で問題の解析モデルを開いた状態で***、スクリプトを実行します。

    - ***最適化を止めるには、計算中の Femtet を終了するか、スクリプトを実行している python プロセスを終了してください。*** それまでの最適化の過程は csv に保存されており、失われません。
    
1. 出力された最適化過程の一覧を確認します。一覧は表形式の構造を持っています。列は *変数、目的、拘束(設定した場合)、非劣解、拘束を満たすかどうか、解析終了時刻* です。各行は、その変数の組み合わせで FEM シミュレーションを行った結果の評価指標の値、拘束の値などを示しています。詳細は、以下も参考にしてください。
    - 拘束:ある数式が任意の範囲内にあるようにすることです。具体的な記述方法は**動作するサンプルコード**も参考にしてください。
    - 非劣解:劣解とは、解集合の中で、その解よりも全ての評価指標が好ましい解が存在する解のことです。非劣解とは、劣解ではない解のことです。単一の評価指標のみを持つ最適化問題の場合、非劣解は最適解です。


---

## English version of this document
We're sorry, this section is under constructing.

---
Copyright (C) 2023 kn514 <kazuma.naito@murata.com>  
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "PyFemtet",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": "Kazuma Naito <kazuma.naito@murata.com>",
    "keywords": "CAE,FEM,design,optimization",
    "author": "",
    "author_email": "Kazuma Naito <kazuma.naito@murata.com>",
    "download_url": "https://files.pythonhosted.org/packages/3f/d9/ef8b4b7ea5a16d35f078f966f04eafb8e9b8bf8e50257927a8f760795ddf/PyFemtet-0.1.3b0.tar.gz",
    "platform": null,
    "description": "# Welcome To PyFemtet.opt !\nPyFemtet.opt \u306f\u3001Femtet \u3092\u7528\u3044\u3066\u30d1\u30e9\u30e1\u30fc\u30bf\u6700\u9069\u5316\u3092\u884c\u3046\u3053\u3068\u306e\u3067\u304d\u308b Python \u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3059\u3002\n\n## \u6a5f\u80fd\n\nFemtet \u3092\u4f7f\u3063\u305f\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u3063\u3066\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u6700\u9069\u5316\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\u9023\u7d9a\u5909\u6570\u306e\u5358\u76ee\u7684\u30fb\u591a\u76ee\u7684\u6700\u9069\u5316\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\n\u3044\u304f\u3064\u304b\u306e\u6700\u9069\u5316\u7d50\u679c\u53ef\u8996\u5316\u6a5f\u80fd\u3092\u5099\u3048\u3066\u304a\u308a\u3001\u6700\u9069\u5316\u7d50\u679c\u306e\u5206\u6790\u304c\u53ef\u80fd\u3067\u3059\u3002\n\n***\u6ce8\u610f\uff1a\u73fe\u5728\u3001\u672c\u30e9\u30a4\u30d6\u30e9\u30ea\u306f \u03b1 \u7248\u3067\u3059\uff01***\n\n## install\n\n\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\n\n1. Femtet \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n    [https://www.muratasoftware.com/](https://www.muratasoftware.com/)\n\n\n1. Femtet \u306e\u30de\u30af\u30ed\u6709\u52b9\u5316\n\n    \u8a73\u3057\u304f\u306f\u3001Femtet \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306b\u30b9\u30bf\u30fc\u30c8\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u300c\u30de\u30af\u30ed\u6a5f\u80fd\u3092\u6709\u52b9\u5316\u3059\u308b\u300d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n    \u30de\u30af\u30ed\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f excel \u304c\u5fc5\u8981\u3067\u3059\u3002\n\n1. Python \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n    [https://www.python.org/](https://www.python.org/)\n\n1. PyFemtet \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n    ```pip install PyFemtet```\n\n1. Femtet \u306e\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n    PyFemtet \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u74b0\u5883\u3067\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u524a\u9664\u3055\u308c\u307e\u305b\u3093\u3002\n    ```\n    pip uninstall PyFemtet\n    ```\n\n## \u52d5\u4f5c\u3059\u308b\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u30fb\u30b5\u30f3\u30d7\u30eb\u89e3\u6790\u30e2\u30c7\u30eb\n.zip \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u4ee5\u4e0b\u306e\u4f4d\u7f6e\u306b\u3001.py \u30d5\u30a1\u30a4\u30eb\u3068\u3001\u305d\u308c\u3068\u540c\u540d\u306e .femprj \u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n```\n.\\src\\PyFemtet\\FemtetPJTSample\n```\n\u3053\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u542b\u307e\u308c\u308b ```.femprj``` \u30d5\u30a1\u30a4\u30eb\u306f\u3001\u5909\u6570\u8a2d\u5b9a\u6e08\u307f\u306e\u5358\u7d14\u306a\u89e3\u6790\u30e2\u30c7\u30eb\u3067\u3059\u3002\u5bfe\u5fdc\u3059\u308b\u540c\u540d\u306e ```.py``` \u30d5\u30a1\u30a4\u30eb\u306f\u3001\u305d\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092 PyFemtet \u3092\u7528\u3044\u3066\u6700\u9069\u5316\u3059\u308b\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3067\u3059\u3002 \n\nFemtet \u3067\u3044\u305a\u308c\u304b\u306e ```.femprj``` \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u305d\u306e\u5f8c\u5bfe\u5fdc\u3059\u308b ```.py``` \u30d5\u30a1\u30a4\u30eb\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n\n\n## \u4f7f\u3044\u65b9\n\n\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\n\n1. Femtet \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\n\n    Femtet \u4e0a\u3067\u89e3\u6790\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u6700\u9069\u5316\u3057\u305f\u3044\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u6570\u3068\u3057\u3066\u767b\u9332\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n1. \u8a55\u4fa1\u6307\u6a19\u306e\u8a2d\u5b9a\n\n    \u89e3\u6790\u7d50\u679c\u3084\u30e2\u30c7\u30eb\u5f62\u72b6\u304b\u3089\u8a55\u4fa1\u3057\u305f\u3044\u6307\u6a19\u3092\u51fa\u529b\u3059\u308b\u51e6\u7406\u3092 Femtet Python \u30de\u30af\u30ed\u3092\u7528\u3044\u3066\u8a18\u8ff0\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n    \u4ee5\u4e0b\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002\n    ```python\n    from win32com.client import constants\n    from win32com.client import Dispatch\n    Femtet = Dispatch(\"FemtetMacro.Femtet\")\n\n    # \u30de\u30af\u30ed\u304b\u3089\u89e3\u6790\u7d50\u679c\u3092\u958b\u304f\n    Femtet.OpenCurrentResult(True)\n    # \u89e3\u6790\u7d50\u679c\u3092\u53d6\u5f97\u3059\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\n    Gogh = Femtet.Gogh\n    # \u6d41\u901f\u3092\u53d6\u5f97\u3059\u308b\u8a2d\u5b9a\n    Gogh.Pascal.Vector = constants.PASCAL_VELOCITY_C\n    # \u76ee\u7684\u306e\u9762\u3067\u7a4d\u5206\u3057\u6d41\u91cf\u3092\u53d6\u5f97\n    _, ret = Gogh.SimpleIntegralVectorAtFace_py([2], [0], constants.PART_VEC_Y_PART_C)\n\n    print(ret.Real) # \u6d41\u91cf\uff08\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u3053\u308c\u3092\u8a55\u4fa1\u6307\u6a19\u306b\u3059\u308b\uff09\n    ```\n\n1. \u30e1\u30a4\u30f3\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4f5c\u6210\n\n    \u4e0a\u8a18\u3067\u5b9a\u7fa9\u3057\u305f\u8a55\u4fa1\u6307\u6a19\u3092\u542b\u3080\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u66f8\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002\u524d\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u8a18\u8ff0\u3057\u305f\u8a55\u4fa1\u6307\u6a19\u304c ```get_flow``` \u95a2\u6570\u306e\u4e2d\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n\n    ```python\n    from PyFemtet.opt import FemtetScipy\n    from win32com.client import constants\n    # from win32com.client import Dispatch\n    # Femtet = Dispatch(\"FemtetMacro.Femtet\") # \u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306f\u4f7f\u7528\u3057\u307e\u305b\u3093\n\n    '''h, r \u3068\u3044\u3046\u5909\u6570\u3092\u6709\u3059\u308b\u89e3\u6790\u30e2\u30c7\u30eb\u3067\u7c21\u6613\u6d41\u4f53\u89e3\u6790\u3092\u884c\u3044\u3001\u3042\u308b\u9762\u306e\u6d41\u91cf\u3092 0.3 \u306b\u3057\u305f\u3044\u5834\u5408\u3092\u60f3\u5b9a\u3057\u305f\u30b9\u30af\u30ea\u30d7\u30c8'''\n\n    # \u89e3\u6790\u7d50\u679c\u304b\u3089\u6d41\u91cf\u3092\u53d6\u5f97\u3059\u308b\u95a2\u6570\n    def get_flow(Femtet):\n        # \u3053\u306e\u95a2\u6570\u306f\u3001\u7b2c\u4e00\u5f15\u6570\u306b Femtet \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u53d6\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        # Femtet.OpenCurrentResult(True) # \u3053\u306e\u51e6\u7406\u306f\u3042\u3063\u3066\u3082\u3044\u3044\u3067\u3059\u304c\u3001\u4e0d\u8981\u3067\u3059\n        Gogh = Femtet.Gogh\n        Gogh.Pascal.Vector = constants.PASCAL_VELOCITY_C\n        _, ret = Gogh.SimpleIntegralVectorAtFace_py([2], [0], constants.PART_VEC_Y_PART_C)\n        flow = ret.Real\n        return flow\n\n    # \u6700\u9069\u5316\u51e6\u7406\u3092\u884c\u3046\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u7528\u610f\n    FEMOpt = FemtetScipy()\n\n    # \u89e3\u6790\u30e2\u30c7\u30eb\u3067\u767b\u9332\u3055\u308c\u305f\u5909\u6570\n    FEMOpt.add_parameter(\"h\", 10, memo='\u9ad8\u3055')\n    FEMOpt.add_parameter(\"r\", 5, memo='\u534a\u5f84')\n\n    # \u6d41\u91cf\u304c 0.3 \u306b\u8fd1\u3065\u304f\u3088\u3046\u306b\u30b4\u30fc\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\n    FEMOpt.add_objective(get_flow, name='\u6d41\u91cf', direction=0.3)\n\n    # \u6700\u9069\u5316\u5b9f\u884c\u4e2d\u306b\u305d\u306e\u53ce\u675f\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b(experimental)\n    FEMOpt.set_process_monitor()\n\n    # \u6700\u9069\u5316\u306e\u5b9f\u884c \u203b\u5b9f\u884c\u3059\u308b\u3068\u3001csv \u30d5\u30a1\u30a4\u30eb\u3067\u306e\u6700\u9069\u5316\u904e\u7a0b\u306e\u4fdd\u5b58\u304c\u59cb\u307e\u308a\u307e\u3059\u3002\n    FEMOpt.main()\n\n    # \u6700\u9069\u5316\u904e\u7a0b\u306e\u4e00\u89a7\u8868\u793a\uff08\u6700\u9069\u5316\u7d42\u4e86\u6642\u70b9\u3067\u306e csv \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3068\u540c\u3058\u3067\u3059\uff09\n    print(FEMOpt.history)\n\n    ```\n    \u6ce8\u610f\uff1aFemtet \u5185\u3067\u6570\u5f0f\u3092\u8a2d\u5b9a\u3057\u305f\u5909\u6570\u306b\u5bfe\u3057 ```add_parameter``` \u3092\u884c\u308f\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u6570\u5f0f\u304c\u5931\u308f\u308c\u307e\u3059\u3002\n\n1. ***Femtet \u3067\u554f\u984c\u306e\u89e3\u6790\u30e2\u30c7\u30eb\u3092\u958b\u3044\u305f\u72b6\u614b\u3067***\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\n\n    - ***\u6700\u9069\u5316\u3092\u6b62\u3081\u308b\u306b\u306f\u3001\u8a08\u7b97\u4e2d\u306e Femtet \u3092\u7d42\u4e86\u3059\u308b\u304b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b python \u30d7\u30ed\u30bb\u30b9\u3092\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002*** \u305d\u308c\u307e\u3067\u306e\u6700\u9069\u5316\u306e\u904e\u7a0b\u306f csv \u306b\u4fdd\u5b58\u3055\u308c\u3066\u304a\u308a\u3001\u5931\u308f\u308c\u307e\u305b\u3093\u3002\n    \n1. \u51fa\u529b\u3055\u308c\u305f\u6700\u9069\u5316\u904e\u7a0b\u306e\u4e00\u89a7\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u4e00\u89a7\u306f\u8868\u5f62\u5f0f\u306e\u69cb\u9020\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u5217\u306f *\u5909\u6570\u3001\u76ee\u7684\u3001\u62d8\u675f\uff08\u8a2d\u5b9a\u3057\u305f\u5834\u5408\uff09\u3001\u975e\u52a3\u89e3\u3001\u62d8\u675f\u3092\u6e80\u305f\u3059\u304b\u3069\u3046\u304b\u3001\u89e3\u6790\u7d42\u4e86\u6642\u523b* \u3067\u3059\u3002\u5404\u884c\u306f\u3001\u305d\u306e\u5909\u6570\u306e\u7d44\u307f\u5408\u308f\u305b\u3067 FEM \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u884c\u3063\u305f\u7d50\u679c\u306e\u8a55\u4fa1\u6307\u6a19\u306e\u5024\u3001\u62d8\u675f\u306e\u5024\u306a\u3069\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001\u4ee5\u4e0b\u3082\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n    - \u62d8\u675f\uff1a\u3042\u308b\u6570\u5f0f\u304c\u4efb\u610f\u306e\u7bc4\u56f2\u5185\u306b\u3042\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5177\u4f53\u7684\u306a\u8a18\u8ff0\u65b9\u6cd5\u306f**\u52d5\u4f5c\u3059\u308b\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9**\u3082\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n    - \u975e\u52a3\u89e3\uff1a\u52a3\u89e3\u3068\u306f\u3001\u89e3\u96c6\u5408\u306e\u4e2d\u3067\u3001\u305d\u306e\u89e3\u3088\u308a\u3082\u5168\u3066\u306e\u8a55\u4fa1\u6307\u6a19\u304c\u597d\u307e\u3057\u3044\u89e3\u304c\u5b58\u5728\u3059\u308b\u89e3\u306e\u3053\u3068\u3067\u3059\u3002\u975e\u52a3\u89e3\u3068\u306f\u3001\u52a3\u89e3\u3067\u306f\u306a\u3044\u89e3\u306e\u3053\u3068\u3067\u3059\u3002\u5358\u4e00\u306e\u8a55\u4fa1\u6307\u6a19\u306e\u307f\u3092\u6301\u3064\u6700\u9069\u5316\u554f\u984c\u306e\u5834\u5408\u3001\u975e\u52a3\u89e3\u306f\u6700\u9069\u89e3\u3067\u3059\u3002\n\n\n---\n\n## English version of this document\nWe're sorry, this section is under constructing.\n\n---\nCopyright (C) 2023 kn514 <kazuma.naito@murata.com>  \nEveryone is permitted to copy and distribute verbatim copies\nof this license document, but changing it is not allowed.\n",
    "bugtrack_url": null,
    "license": "Copyright (c) 2023 Murata Manufacturing Co., Ltd. All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \u201cAS IS\u201d AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
    "summary": "Design parameter optimization using Femtet.",
    "version": "0.1.3b0",
    "project_urls": {
        "Bug Reports": "https://github.com/kn514/PyFemtetOpt/issues",
        "Femtet": "https://www.muratasoftware.com/",
        "Homepage": "https://github.com/kn514/PyFemtetOpt",
        "Source": "https://github.com/kn514/PyFemtetOpt"
    },
    "split_keywords": [
        "cae",
        "fem",
        "design",
        "optimization"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e9ca7af85c0ddfeb64555d93fb05c6383a4f8be2d8fa7087b9e373019a38950a",
                "md5": "ba88f24cba83172867177fff560eb09d",
                "sha256": "d60b28bd97601978607ae5c3b68b3472119458f4bf52a1f9ff67917c93920b4b"
            },
            "downloads": -1,
            "filename": "PyFemtet-0.1.3b0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ba88f24cba83172867177fff560eb09d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 282648,
            "upload_time": "2023-12-07T06:43:03",
            "upload_time_iso_8601": "2023-12-07T06:43:03.004408Z",
            "url": "https://files.pythonhosted.org/packages/e9/ca/7af85c0ddfeb64555d93fb05c6383a4f8be2d8fa7087b9e373019a38950a/PyFemtet-0.1.3b0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3fd9ef8b4b7ea5a16d35f078f966f04eafb8e9b8bf8e50257927a8f760795ddf",
                "md5": "66915e803d5415d160fee3dfadcece95",
                "sha256": "222497e8d3a368aabfeffb366286f4c6a055eb5fec9c8335977f76864f323f5e"
            },
            "downloads": -1,
            "filename": "PyFemtet-0.1.3b0.tar.gz",
            "has_sig": false,
            "md5_digest": "66915e803d5415d160fee3dfadcece95",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 552720,
            "upload_time": "2023-12-07T06:43:05",
            "upload_time_iso_8601": "2023-12-07T06:43:05.823025Z",
            "url": "https://files.pythonhosted.org/packages/3f/d9/ef8b4b7ea5a16d35f078f966f04eafb8e9b8bf8e50257927a8f760795ddf/PyFemtet-0.1.3b0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-07 06:43:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kn514",
    "github_project": "PyFemtetOpt",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyfemtet"
}
        
Elapsed time: 0.15024s